source: src/LIN/LINToASMAxiom.ma @ 2946

Last change on this file since 2946 was 2946, checked in by tranquil, 7 years ago

main novelties:

  • there is an in-built stack_usage nat in joint states, at the base of the new division of RTL's semantics (with separate stacks, with separate stacks but with an artificial overflow error, with a unique stack)
  • a premain is added semantically to the global env, so initial cost label and main call and return are observed
  • proper initialization is now in LINToASM (to be sure, endianess should be checked ;-)

The update breaks proofs of back end atm. compiler.ma should be okay, but I have not had time to complete its compilation.

File size: 1.8 KB
Line 
1(**************************************************************************)
2(*       ___                                                              *)
3(*      ||M||                                                             *)
4(*      ||A||       A project by Andrea Asperti                           *)
5(*      ||T||                                                             *)
6(*      ||I||       Developers:                                           *)
7(*      ||T||         The HELM team.                                      *)
8(*      ||A||         http://helm.cs.unibo.it                             *)
9(*      \   /                                                             *)
10(*       \ /        This file is distributed under the terms of the       *)
11(*        v         GNU General Public License Version 2                  *)
12(*                                                                        *)
13(**************************************************************************)
14
15include "LIN/LINToASM.ma".
16include "LIN/LIN_semantics.ma".
17include "joint/Traces.ma".
18include "common/StatusSimulation.ma".
19
20(* atm ASM_abstract_status is related to object code, not ASM... *)
21axiom ASM_status : pseudo_assembly_program → abstract_status.
22axiom make_ASM_initial_state : ∀p.res (ASM_status p).
23
24axiom LINToASM_ok :
25∀stacksizes : ident → option ℕ. (* are hypotheses needed here? *)
26∀p_in : joint_program LIN.
27∀p_out : pseudo_assembly_program.
28lin_to_asm p_in = Some ? p_out →
29∃[1] R.
30  status_simulation
31    (joint_status LIN_semantics p_in stacksizes)
32    (ASM_status p_out)
33    R ∧
34  ∀init_in.make_initial_state
35    (mk_prog_params LIN_semantics p_in stacksizes) = OK … init_in →
36  ∃init_out.
37    make_ASM_initial_state p_out =
38      OK ? init_out ∧
39   R init_in init_out.
Note: See TracBrowser for help on using the repository browser.