Author Topic: addressing  (Read 3096 times)

0 Members and 1 Guest are viewing this topic.

Peter

  • Full Member
  • ***
  • Posts: 161
addressing
« on: October 21, 2010, 05:57:15 am »
Deleted
« Last Edit: April 14, 2015, 03:41:09 am by Peter »

Charles Pegge

  • Admin Support Member
  • *****
  • Posts: 4486
    • Oxygen Basic
Re: addressing
« Reply #1 on: October 21, 2010, 12:04:56 pm »

Hi Peter,

Thanks for the new rand function.

Oxygen does not support this operand expression [m+esi+8].

This is because variable addresses are not translated into absolute constants.

Local variables are referenced to the EBP register for example: [ebp-32] and static/global variables use the EBX register, starting with [ebx+4096].

So I suggest doing this:

lea edx,m
movzx eax,[edx+edi+5]

If you want to print register values in the middle of an asm sequence then stack the registers first. Print uses several registers so you need to save the register content to a variable before printing.

pushad
mov a,eax
print a
popad


the ebx and ebp registers must be preserved whenever basic is used

Charles

Charles Pegge

  • Admin Support Member
  • *****
  • Posts: 4486
    • Oxygen Basic
Re: addressing
« Reply #2 on: October 21, 2010, 01:48:16 pm »
Peter,

It supports 64 bit assembly code and I have had 64 bit sample EXE and DLL code working but Oxygen needs a 64 bit run-time library to make it usable in this mode. I'm aiming for early 2011.

Charles

John

  • Hero Member
  • *****
  • Posts: 3966
Re: addressing
« Reply #3 on: October 21, 2010, 05:37:37 pm »
Quote
I'm aiming for early 2011.

Great! That should be about the time I start looking seriously at a 64 bit box of my own. (rather than using a cloud instance of one when needed)