64-bit oxygen.dll

Started by Joe Caverly, February 20, 2023, 01:45:52 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Charles Pegge

Hi Pierre,

I've made good progress this week on Oxygen64.dll. It has passed the minimal self-compile test and also compiles my most complex GLSL code as well as other pieces. I can release it with 070 for you to try out. It requires a 64 bit compiler co2m64.exe for want of a better name.

Pierre Bellisle

Wow!

This I like. Real good news. You are great.
I will try as soon as avaialable.
Still lot of fun with the current one in the mean time.

Thanks Charles.



  •  

Charles Pegge

I've just posted OxygenBasic070 including co2m64.exe and oxygen64.dll.

You can use co2m64 from the console or Oxide (shift F5 to run direct) or Peroxide64.

the version macro will now display 32bit or 64bit compiler bitness.

James C. Fuller

Charles,

Can I use  co2m64 instead of co2 for compiling to a 64bit  exe . I never use 32 bit.

This is my current command line usage
cO2 -m -64 C:\OxygenBasic\demos\!ProjA\Controls\DlgCtrl

I tried this but it also ran the program
co2m64 -m  C:\OxygenBasic\demos\!ProjA\Controls\DlgCtrl

James
  •  

Charles Pegge

The only difference between co2 and co2m64 is that the latter loads oxygen64.dll. This means that the compiler switches behave the same for producing 32bit/64 binaries. But direct execution will, of course be 64 bit, as you specify here:

co2m64 -m  C:\OxygenBasic\demos\!ProjA\Controls\DlgCtrl

and producing 64bit binaries will still require the -64 switch:

co2m64 -m -64 C:\OxygenBasic\demos\!ProjA\Controls\DlgCtrl

Zlatko Vid

Hi Charles

I don't want to be a "retro pedro" but where gxo2 gone?
I have o2 604 and i see that is now under folder tools
i always think that co2 is just for console programs ...
and i don't make console based programs with o2..
  •  

Charles Pegge

Hi Aurel,
gxo2 is the original compiler written in FreeBasic. co2 does the same job but it is self-compiled with OxygenBasic instead of freebasic, and has a few updated switches. co2m64 is almost identical to co2 but is 64bit compiled and uses oxygen64.dll. It is possible to use any of these with your IDE.

Zlatko Vid

Quote. It is possible to use any of these with your IDE

Yes it is just add compiler path and work  ;)

Pierre Bellisle

I used the 64bit dll to compile my two hexview.inc demos.
So far so good. 
Good job Charles...

It's gonna be my main compiler.

Note that, on my side, to avoid GPF, I had to use the last updated version of dialogs.inc
  •  

Charles Pegge

The source code is almost identical for both 32bit and 64bit and I uncovered one bug which had escaped detection so far. It generated a negative array index, potentially corrupting a major buffer. It only became visible after a 64bit self-compile.

So I would recommend adopting version 070 for both 32bit and 64bit Oxygen dlls.

Pierre Bellisle

From what I understand, I can have only one O2 folder with coexisting both oxygen.dll & oxygen64.dll, and both co2.exe & co264.exe. 
This bring rtl32/64.inc version conflict via "RTL version mismatches o2 version" 64bit dll is now rtlversion "0.7.0", 32bit dll is rtlversion "0.6.0".
I can rem the #error but I loose the version checking.

Is it correct to use this in rtl32/64.inc...
  $ rtlversion "0.7.0"
  $ rtlversion32 "0.6.0"
  $ rtlversion64 "0.7.0"
  '
  #if not match(rtlversion32,o2version)
  #if not match(rtlversion64,o2version)
    #error "RTL version mismatches o2 version "+o2version
  #endif
  #endif
  •  

Pierre Bellisle

On more question, does the compiler result log file co2.txt will remain with this name or could become co264.txt for the 64bit dll?
  •  

Charles Pegge

Hi Pierre,

I checked inf/Oxylog and found the last change to the RTLs was in September 2019. (release 0.2.8). So it should be safe to override the version check.

I think the co2.txt name should remain. It is a very transient file that is created at the end of each compilation, so you have to catch it whenever you need a stable record of compilation stats.

If/when 64bit compilation becomes the norm we might change names, so co2 becomes 64bit and co32.exe wil become a 32bit legacy item.


Pierre Bellisle

Thanks, I will code my pre-compiler accordingly so I can go from one to the other in a snap. 
  •