[fpc-devel] asm offset question

ABorka fpc-devel at aborka.com
Mon Nov 10 19:00:45 CET 2008

True, but if the programs only run on PCs (Windows and Linux on Intel 
processors in this case) it should work. Not everyone who considers 
using FPC/Lazarus wants to run the compiled programs on 15 platforms. 
Sometimes all that is needed is 1 platform.
There are some encrypting/decrypting functions that would be hard to 
write in other than asm, especially if they are already done.

Some projects I just wanted to try to compile strictly on Windows 
without wanting to go to other OS-es. Just to see if it is possible at 
all to move projects over to FPC/Lazarus from Delphi with a reasonable 
amount of work. Until that doesn't work, going to other OS-es is not 
really viable anyway.
Not having a debugger in Lazarus with a properly working watch window 
and CPU window doesn't help either to do these tasks.

The "offset", "aam" and "aad" asm instructions are not working as they 
are in Delphi, but there are workarounds fortunately, until they will be 
fixed in FPC, if ever.


aam 16 (or aam 8, etc.)
aad 16 (or aad 8, etc.)
Both give compiler errors and points to the wrong source line. Need to 
use "db" instructions to put the machine code there to circumvent it.

move esi, offset variable
Gives compiler error but the functionality can be replaced with the "lea 
esi, variable" instruction instead as a workaround.

Michael Schnell wrote:
> IMHO, it's not a good idea to "port" ASM code to TP (as TP's purpose is 
> platform independence). So at best you should rewrite this in Pascal. 
> Normally with modern PCs the performance decrease is not noticeable.
> -Michael
> _______________________________________________
> fpc-devel maillist  -  fpc-devel at lists.freepascal.org
> http://lists.freepascal.org/mailman/listinfo/fpc-devel

More information about the fpc-devel mailing list