Data update
This commit is contained in:
parent
4bb20c9b71
commit
cbaf4c4b64
12390 changed files with 318560 additions and 27248 deletions
|
|
@ -24,7 +24,7 @@ Module Checkit {
|
|||
Print m=5605
|
||||
Print Error=0, ok=False
|
||||
|
||||
Print Eval(DataMem, 0)=5605, Eval(DataMem, 0)
|
||||
Print DataMem[0]=5605, Eval(DataMem, 0)
|
||||
\\ sub used as Exit here
|
||||
Sub Ret()
|
||||
Return ExecMem, Address:=0xC3
|
||||
|
|
|
|||
|
|
@ -1,42 +1,38 @@
|
|||
Function MyAdd {
|
||||
Buffer DataMem as Long*2
|
||||
Buffer Code ExecMem as byte*32
|
||||
Address=0
|
||||
EmbByte(0x31, 0xC0)
|
||||
EmbByteLong(0x3,0x5, DataMem(0)) ' add eax, [DataMem(0)]
|
||||
EmbByteLong(0x3,0x5, DataMem(1)) ' add eax, [DataMem(1)]
|
||||
EmbLong(0xa3, DataMem(0)) ' mov [DataMem(0)], eax
|
||||
Rem :
|
||||
EmbByte(0x31, 0xC0) ' xor eax, eax
|
||||
Ret() ' Return
|
||||
=lambda ExecMem, DataMem (a as double, b as double)-> {
|
||||
Return DataMem, 0:=a, 1:=b
|
||||
Try ok {
|
||||
Execute Code ExecMem, 0
|
||||
}
|
||||
If not ok then {
|
||||
=Uint(Error)
|
||||
} Else {
|
||||
=Eval(DataMem, 0)
|
||||
}
|
||||
}
|
||||
Sub Ret()
|
||||
Return ExecMem, Address:=0xC3
|
||||
Address++
|
||||
End Sub
|
||||
Sub EmbByte()
|
||||
Return ExecMem, Address:=Number, Address+1:=Number
|
||||
Address+=2
|
||||
End Sub
|
||||
Sub EmbLong()
|
||||
Return ExecMem, Address:=Number, Address+1:=Number as Long
|
||||
Address+=5
|
||||
End Sub
|
||||
Sub EmbByteLong()
|
||||
Return ExecMem, Address:=Number, Address+1:=Number, Address+2:=Number as Long
|
||||
Address+=6
|
||||
End Sub
|
||||
Buffer DataMem as Long*2
|
||||
Buffer Code ExecMem as byte*32
|
||||
Address=0
|
||||
EmbByte(0x31, 0xC0)
|
||||
EmbByteLong(0x3,0x5, DataMem(0)) ' add eax, [DataMem(0)]
|
||||
EmbByteLong(0x3,0x5, DataMem(1)) ' add eax, [DataMem(1)]
|
||||
EmbLong(0xa3, DataMem(0)) ' mov [DataMem(0)], eax
|
||||
Rem :
|
||||
EmbByte(0x31, 0xC0) ' xor eax, eax
|
||||
Ret() ' Return
|
||||
=lambda ExecMem, DataMem (a as double, b as double)-> {
|
||||
Return DataMem, 0:=a, 1:=b
|
||||
Try ok {
|
||||
Execute Code ExecMem, 0
|
||||
}
|
||||
If not ok then =Uint(Error) Else =DataMem[0]
|
||||
}
|
||||
Sub Ret()
|
||||
Return ExecMem, Address:=0xC3
|
||||
Address++
|
||||
End Sub
|
||||
Sub EmbByte()
|
||||
Return ExecMem, Address:=Number, Address+1:=Number
|
||||
Address+=2
|
||||
End Sub
|
||||
Sub EmbLong()
|
||||
Return ExecMem, Address:=Number, Address+1:=Number as Long
|
||||
Address+=5
|
||||
End Sub
|
||||
Sub EmbByteLong()
|
||||
Return ExecMem, Address:=Number, Address+1:=Number, Address+2:=Number as Long
|
||||
Address+=6
|
||||
End Sub
|
||||
}
|
||||
\\ Produce a lambda function with machine code inside
|
||||
UnsingedAdd=MyAdd()
|
||||
Print UnsingedAdd(12, 7), UnsingedAdd(500, 100)
|
||||
Print UnsingedAdd(12, 7)=19, UnsingedAdd(0x8000_0000, 0x8000_0001)=1
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue