Changeset 3370 for src/ASM/CPP2013-policy
- Timestamp:
- Jun 18, 2013, 2:36:31 AM (8 years ago)
- Location:
- src/ASM/CPP2013-policy
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
src/ASM/CPP2013-policy/algorithm.tex
r3363 r3370 180 180 $\sigma: \mathbb{N} \rightarrow \mathbb{N} \times \{\mathtt{short\_jump}, 181 181 \mathtt{absolute\_jump},\mathtt{long\_jump}\}$; a function that associates a 182 pseudo-address with a memory address and a jump length. We do this to be able183 toease the comparison of jump lengths between iterations. In the algorithm,182 pseudo-address with a memory address and a jump length. We do this to 183 ease the comparison of jump lengths between iterations. In the algorithm, 184 184 we use the notation $sigma_1(x)$ to denote the memory address corresponding to 185 $x$, and $sigma_2(x)$ to denotethe jump length corresponding to $x$.185 $x$, and $sigma_2(x)$ for the jump length corresponding to $x$. 186 186 187 187 Note that the $\sigma$ function used for label lookup varies depending on -
src/ASM/CPP2013-policy/biblio.bib
r3363 r3370 174 174 series={Lecture Notes in Computer Science}, 175 175 editor={Hawblitzel, Chris and Miller, Dale}, 176 doi={10.1007/978-3-642-35308-6_ 8},177 title={ An Executable Semantics for CompCert C},178 url={http://dx.doi.org/10.1007/978-3-642-35308-6_ 8},176 doi={10.1007/978-3-642-35308-6_7}, 177 title={On the Correctness of an Optimising Assembler for the Intel MCS-51 Microprocessor}, 178 url={http://dx.doi.org/10.1007/978-3-642-35308-6_7}, 179 179 publisher={Springer Berlin Heidelberg}, 180 author={Campbell, Brian}, 181 pages={60-75} 180 keywords={Verified software; CerCo (Certified Complexity); MCS-51 microcontroller; Matita proof assistant}, 181 author={Mulligan, Dominic P. and Sacerdoti Coen, Claudio}, 182 pages={43-59} 182 183 } 183 184 -
src/ASM/CPP2013-policy/conclusion.tex
r3364 r3370 38 38 only for those programs whose source code operations 39 39 $(f\ ppc_1\ \ldots\ ppc_n)$ applied to code addresses $ppc_1 \ldots ppc_n$ are 40 such that $(f\ (\sigma\ ppc_1)\ ...\ (\sigma\ ppc ) = f\ ppc\ ppc_n))$. For40 such that $(f\ (\sigma\ ppc_1)\ ...\ (\sigma\ ppc_n) = f\ ppc_1\ ppc_n))$. For 41 41 example, an injective $\sigma$ preserves a binary equality test f for code 42 42 addresses, but not pointer subtraction. … … 58 58 would be to run an optimisation algorithm, and then verify the safety of the 59 59 result using a verified validator. Such a validator would be easier to verify 60 than the algorithm itself , but it would still leave the question of61 termination open. In the case of a least fixed point algorithm, at least, the 62 s olution is not necessarily safe until the algorithm terminates, so this63 effort would still have to be expended.64 60 than the algorithm itself and it would also be efficient, requiring only a 61 linear pass over the source code to test the specification. However, it is 62 surely also interesting to formally prove that the assembler never rejects 63 programs that should be accepted, i.e. that the algorithm itself is correct. 64 This was the topic of the current paper. 65 65 66 66 \subsection{Related work} -
src/ASM/CPP2013-policy/proof.tex
r3365 r3370 20 20 &&&&& \mathbf{let}\ instruction' \equiv \mathtt{fetch\_pseudo\_instruction}\ instr\_list\ ppc'\ ppc\_ok'\ \mathbf{in} \notag\\ 21 21 &&&&&\ \mathtt{instruction\_size}\ sigma\ policy\ ppc'\ instruction' = 0)\ \wedge \notag\\ 22 &&&&& pc + (\mathtt{instruction\_size}\ sigma\ policy\ ppc\ instruction = 2^{16}))22 &&&&& pc + \mathtt{instruction\_size}\ sigma\ policy\ ppc\ instruction = 2^{16}) 23 23 \end{alignat*} 24 24 \caption{Main correctness statement\label{statement}}
Note: See TracChangeset
for help on using the changeset viewer.