$ FileName "test64abcd.exe"
#include "$\inc\RTL64.inc"
Declare Function MessageBox Lib "user32.dll" Alias "MessageBoxA" (ByVal hwnd As Long, ByVal lpText As String, ByVal lpCaption As String, ByVal wType As Long) As Sys
byte val1
byte val2
int result ''resd 1
val1=4
val2=6 '
mov eax,val1
mov eax,val2 ''multiply eax by ebx "
mul val1 'ebx
mov result,eax
zstring tit[]="64Bit OxygenBasic"
zstring msg[]="Hello dear Animal World! " + str(result)
'' oxygen 64 bit
''
sub rsp,40h ''32
mov r9, 0
lea r8, tit
lea rdx, msg
mov rcx, 0
call messagebox
add rsp, 40h ''32
'' oxygen 64 bit
''
'' output: Hello dear Animal World! 24
'' how I can detect if it's 32 bit or 64 bit
'' oxygen basic
''
#if defined( __FB_64BIT__ ) '' ?? ( __OXYGEN_64BIT__ )
#print "Producing 64-bit code output"
#else
#print "Producing 32-bit code output"
#endif
print "ok"
'process flags:
%CREATE_NEW_CONSOLE 0x00000010
%CREATE_NO_WINDOW 0x08000000
'etc
'
function Exec(string c, int wait=0, flags=0) as int
===================================================
STARTUPINFO infs
PROCESS_INFORMATION infp
CreateProcess null,c,0,0,0,flags,0,0,@infs,@infp
if wait
WaitForMultipleObjects 1,@infp.hthread,1,-1
end if
GetExitCodeProcess(infp.hProcess,@function)
CloseHandle infp.hProcess
CloseHandle infp.hThread
return 0
end function
function QuExec(string c,d,f, int wait=0,flags=0) as int
========================================================
return Exec(qu+c+qu+" "+d+" "+qu+f+qu, wait,flags)
end function
function DOS(string s, int wait=0,flags=0)
==========================================
string c
if s then
c="cmd.exe /c "+s
else
c="cmd.exe"
end if
Exec c, wait,flags
end function
' multiplication of two values
'
Declare Function MessageBox Lib "user32.dll" alias "MessageBoxA" (ByVal hwnd As Long, ByVal lpText As String, ByVal lpCaption As String, ByVal wType As Long) As Long
' 1) '- multiply go asm ------------------- //
'
byte val1
byte val2
int result ''resd 1
val1=4
val2=6 '
mov eax,val1
mov eax,val2 ''multiply eax by ebx "
mul val1 'ebx
mov result,eax
'print "the result of val1*val2 is " + str(result) '24
zstring tit[] = " PowerBASIC"
string msg[] = " hello my powerbasic friends " + str(result)
push 2 ' 0
addr eax,tit
push eax
addr eax,msg
push eax
addr eax,result
push 0
call MessageBox
mov eax, msg
Page created in 0.117 seconds with 12 queries.