Data commit

This commit is contained in:
Ingy döt Net 2023-07-01 11:58:00 -04:00
parent 7387c8f97b
commit cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions

View file

@ -0,0 +1,51 @@
Module Checkit {
Buffer DataMem as Long*10
Return DataMem, 1:=500 ' second Long
Print Eval(DataMem, 1)+5100+5=5605
\\ Now we do math executing machine code
Buffer Code ExecMem as byte*1024
Address=0
EmbLong(0xb8, 5100) ' mov eax,5100
EmbByteByte(0x83, 0xC0, 5) ' add eax,0x5
EmbByteLong(0x3,0x5, DataMem(1)) ' add eax, [DataMem(1)]
EmbLong(0xa3, DataMem(0)) ' mov [DataMem(0)], eax
\\ split rem to execute xor eax eax (eax=0)
Rem : EmbByte(0x31, 0xC0) ' xor eax, eax
Ret() ' Return
\\
Try ok {
Execute Code ExecMem, 0
}
\\If Eax <>0 then we get error, so we read error as Uint()
\\ Error read once then change to zero
m=Uint(Error)
\\ Hex is Print Hexadecimal for unsigned numbers
Hex m
Print m=5605
Print Error=0, ok=False
Print Eval(DataMem, 0)=5605, Eval(DataMem, 0)
\\ sub used as Exit here
Sub Ret()
Return ExecMem, Address:=0xC3
Address++
End Sub
Sub EmbByteByte()
Return ExecMem, Address:=Number, Address+1:=Number, Address+2:=Number
Address+=3
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
}
CheckIt

View 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)