Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
42
Task/Machine-code/M2000-Interpreter/machine-code-2.m2000
Normal file
42
Task/Machine-code/M2000-Interpreter/machine-code-2.m2000
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
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
|
||||
}
|
||||
\\ Produce a lambda function with machine code inside
|
||||
UnsingedAdd=MyAdd()
|
||||
Print UnsingedAdd(12, 7), UnsingedAdd(500, 100)
|
||||
Loading…
Add table
Add a link
Reference in a new issue