diff options
author | Justus Fasse <justus.fasse@etu.univ-grenoble-alpes.fr> | 2020-07-09 09:32:01 +0200 |
---|---|---|
committer | Justus Fasse <justus.fasse@etu.univ-grenoble-alpes.fr> | 2020-07-09 09:32:01 +0200 |
commit | 7f1b9f2a76d13e08f7a00e7ef17f929a6602a32c (patch) | |
tree | 1c86aed732f38481793fa5ab75b51c2b76295266 | |
parent | 932a3eda6a597d534131068d87052967398f0229 (diff) | |
download | compcert-kvx-7f1b9f2a76d13e08f7a00e7ef17f929a6602a32c.tar.gz compcert-kvx-7f1b9f2a76d13e08f7a00e7ef17f929a6602a32c.zip |
Finish proof of Lemma symbol_high_low
-rw-r--r-- | aarch64/Asmgen.v | 6 | ||||
-rw-r--r-- | aarch64/Asmgenproof.v | 11 |
2 files changed, 11 insertions, 6 deletions
diff --git a/aarch64/Asmgen.v b/aarch64/Asmgen.v index 7b30ba40..dae9004d 100644 --- a/aarch64/Asmgen.v +++ b/aarch64/Asmgen.v @@ -61,10 +61,10 @@ Definition basic_to_instruction (b: basic) : res Asm.instruction := OK (Asm.Pfmovimmd rd' f) | PArith (PArithPP (Pmovk sz n pos) rd rs) => - do rd' <- ireg_of_preg rd; do rs' <- ireg_of_preg rs; - if (Asmblock.preg_eq rd rs) then + if (Asmblock.preg_eq rd rs) then ( + do rd' <- ireg_of_preg rd; OK (Asm.Pmovk sz rd' n pos) - else + ) else Error (msg "Asmgen.basic_to_instruction: Pmovk uses a single register as both source and target") | PArith (PArithPP Pmov rd rs) => do rd' <- iregsp_of_preg rd; do rs' <- iregsp_of_preg rs; diff --git a/aarch64/Asmgenproof.v b/aarch64/Asmgenproof.v index 276e95d1..93899c72 100644 --- a/aarch64/Asmgenproof.v +++ b/aarch64/Asmgenproof.v @@ -45,12 +45,17 @@ Let tge := Genv.globalenv tprog. Definition lk :aarch64_linker := {| Asmblock.symbol_low:=Asm.symbol_low tge; Asmblock.symbol_high:=Asm.symbol_high tge|}. + +Lemma symbols_preserved: + forall (s: ident), Genv.find_symbol tge s = Genv.find_symbol ge s. +Proof (Genv.find_symbol_match TRANSF). + Lemma symbol_high_low: forall (id: ident) (ofs: ptrofs), Val.addl (Asmblock.symbol_high lk id ofs) (Asmblock.symbol_low lk id ofs) = Genv.symbol_address ge id ofs. Proof. - unfold lk; simpl. intros; rewrite Asm.symbol_high_low. -Admitted. - + unfold lk; simpl. intros; rewrite Asm.symbol_high_low; unfold Genv.symbol_address; + rewrite symbols_preserved; reflexivity. +Qed. Lemma transf_program_correct: forward_simulation (Asmblock.semantics lk prog) (Asm.semantics tprog). |