Oxygen Basic
Information => Open Forum => Topic started by: Peter on December 03, 2011, 04:55:30 AM
-
Deleted
-
Hi Peter,
You are right about my being over on thinBasic. I am currently reviewing the thinBasic Oxygen materials (as well as virtual White Clouds).
We are also due for Alpha38, featuring 64 bit compiling, since my most complex example now works as a 64bit binary and I am reasonably confident of its stability.
Charles
-
Not because thinBasic is mentioned in your post but hey: there is other than just one single thing.
Charles has evolved his compiler like no-one in the world has never done. Give him a rest some time.
Instead: if you want to help Oxygen project, spread the word about it.
-
Instead: if you want to help Oxygen project, spread the word about it.
And don't forget to mention O2 does 64 bit now.
@Eros - WELCOME!
-
... since my most complex example now works as a 64bit binary and I am reasonably confident of its stability.
With the exception that 64bit classes still don't seem to work right:
---------------------------
o2
---------------------------
lea rip rax,_sp -64!! Junk after instruction: lea rip rax,_sp
>> 48 8D 05 gl _sp
; AFTER: ._mt_
; LINE: 161
---------------------------
OK
---------------------------
In 32 bit the code compiles, in 64 it doesn't...
(just swapped RTL32 with RTL64)
There is only one inc file that has 161 lines and on that line is the statement "end class".
Error messages are still a mystery to me :(
-
Can you show me your code please Frank.
64 bit OOP is working here.
PS: I have just posted the latest Oxygen-in-Progress
-
Welcome to the forum Eros! :)
-
After investing more time:
found out that the culprit was a method with the name "Quit()".
If the name is changed to "Quitter()" it works.
>:(
-
Frank,
Didn't Charles mention that this is the free trial version of the 64 bit compiler? If you want unrestricted methods (and other unmentioned bugs fixed) you will have to buy Charles a beer. ;D
-
It sounds like a side-effect of something else. If your o2 version is earlier than 1 December...
The new Oxygen error messages should tell you which include file. This info is now carried through to the assembler.
No beer necessary. Perhaps a small brandy for yourself :)
-
I tried with the newest Oxygen and the bug still remains; and I agree it seems to be a side effect...
BTW: If it's OK with you: I'm ready for a Jack Daniels now ;D
-
If you want me to look at it privately, then send it zipped to cevpegge at oxygenbasic.org.
I try to cover all possibilities but it may be some kind of misread on the 64 bit side.
Charles
-
No need for that, found it:
$FileName "test.exe"
includepath "..\inc\"
'include "RTL32.inc"
include "RTL64.inc"
include "MinWin.inc"
function Quit()
PostQuitMessage(0)
end function
class TEST
method constructor()
end method
method destructor()
end method
method Quit()
PostQuitMessage( 0 )
end method
end class
' =====
' ENTRY
' =====
new TEST app
del app
There is a function with the same name as a method inside a class.
With RTL32 it compiles, with RTL64 it doesn't... but it should.
Didn't think a good old Jack would help that good ;D
-
Okay, I'll look into that, Frank. Now for my next sleep :)
-
Yes definitely. My favorite instruction is lea rip rax,label
In Oxygen this puts the absolute address of a label into the rax register.
I have posted another update fixing Frank's problem and a couple of others related to string <-> val conversions
Also adjustments to Windo.h:
GetAsyncKeyState(key) and 0x8001
As per MSDN spec.
Charles
-
Charles,
How would you rate your migration to 64 bit.
A. Much easier then I thought.
B. About what I expected.
C. I feel bruised after taking an ass kicking from the Windows 64 bit API.
-
I'd go for B. It took a long time to grasp the finer details, the descriptions available are not totally explicit. But once understood it was quite easy to build and test in stages.
However, I strongly feel the calling conventions are poor for high level languages, and this applies to both the Windows and Linux standards. We would have been better off staying with stdcall and cdecl, and it would have made compiler/OS migration so much easier.
Charles