X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2Fsoftware%2Fmatita%2Flibrary%2Fassembly%2Fvm.ma;h=30d073144c486c8040f37d170f09673490cab525;hb=a1f4ef3daaeed7a3121a40afe55f321565669da8;hp=239146a07526445c12d662592117e32c26358b2e;hpb=6e2b36b557fd85add998926a777e7f12933293fc;p=helm.git diff --git a/helm/software/matita/library/assembly/vm.ma b/helm/software/matita/library/assembly/vm.ma index 239146a07..30d073144 100644 --- a/helm/software/matita/library/assembly/vm.ma +++ b/helm/software/matita/library/assembly/vm.ma @@ -14,7 +14,7 @@ set "baseuri" "cic:/matita/assembly/vm/". -include "byte.ma". +include "assembly/byte.ma". definition addr ≝ nat. @@ -95,6 +95,12 @@ definition byte_of_opcode : opcode → byte ≝ in aux opcodemap. +notation "hvbox(# break a)" + non associative with precedence 80 +for @{ 'byte_of_opcode $a }. +interpretation "byte_of_opcode" 'byte_of_opcode a = + (cic:/matita/assembly/vm/byte_of_opcode.con a). + record status : Type ≝ { acc : byte; pc : addr; @@ -105,12 +111,31 @@ record status : Type ≝ { clk : nat }. +notation "{hvbox('Acc' ≝ acc ; break 'Pc' ≝ pc ; break 'Spc' ≝ spc ; break 'Fz' ≝ fz ; break 'Fc' ≝ fc ; break 'M' ≝ m ; break 'Clk' ≝ clk)}" +non associative with precedence 80 for + @{ 'mkstatus $acc $pc $spc $fz $fc $m $clk }. + +interpretation "mk_status" 'mkstatus acc pc spc fz fc m clk = + (cic:/matita/assembly/vm/status.ind#xpointer(1/1/1) acc pc spc fz fc m clk). + definition update ≝ λf: addr → byte.λa.λv.λx. match eqb x a with [ true ⇒ v | false ⇒ f x ]. +notation "hvbox(m break {a ↦ break v})" non associative with precedence 80 for + @{ 'update $m $a $v }. + +notation "hvbox(m break {a ↦ break v} \nbsp x)" non associative with precedence 80 for + @{ 'update4 $m $a $v $x }. + +interpretation "update" 'update m a v = + (cic:/matita/assembly/vm/update.con m a v). + +interpretation "update4" 'update4 m a v x = + (cic:/matita/assembly/vm/update.con m a v x). + lemma update_update_a_a: ∀s,a,v1,v2,b. update (update s a v1) a v2 b = update s a v2 b.