NASM - The Netwide Assembler
NASM Forum => Using NASM => Topic started by: Barry on October 01, 2009, 02:33:17 PM
-
Hi,
I'm currently working on a project that makes use of TrueCrypt. To build TrueCrypt, both NASM and YASM assemblers are required (presumably because YASM supported 64bit before NASM).
I'm attempting to lose the dependency on YASM and have the project use NASM exclusively. However, I don't have a lot of assembly language experience and have come across a problem: I've changed all the YASM reference to use NASM, but visual studio complains about the undefined symbol 'rip'.
Is there a NASM equivalent to rip? The lines in question are:
lea tptr,[enc_tab wrt rip]
and
lea tptr,[dec_tab wrt rip]
Would it be as straight-forward as swapping the NASM equivalent in?
Many thanks,
Barry
-
From the very little I know about 64-bit code, I think "lea ???, [rel enc_tab]" should do what you want, but "lea" requires a register for destination AFAIK, so I don't know what you're going to do about "tptr"! In other words, I don't know! :)
Best,
Frank
-
Thanks for your reply.
I managed to adjust the x86.asm file by just adding 'NEAR' to 4 je instructions.
The problem sections of code in the x64.asm files are:
movzx esi, byte [kptr+4*KS_LENGTH]
lea tptr,[enc_tab wrt rip]
sub kptr, fofs
and:
movzx esi,byte[kptr+4*KS_LENGTH]
lea tptr,[dec_tab wrt rip]
sub kptr, rofs
with Visual Studio complaining about the rip in the lea instructions.
I can post the whole x64.asm code if it will help diagnose the problem.
Cheers,
Barry
-
Maybe you'd better... I downloaded "TrueCrypt" and can't find any such files...
At least, what are "kptr" and "tptr"? Defined as registers? If so, "rel" should solve the problem ("rel rip" is implied). Adding "-Ox" to Nasm's command line would probably have taken care of "jcc near" (Nasm defaults to "short" jccs).
I'm confused... does Nasm complain about "rip", or VS?
This forum software is going to mutilate the code, but post it if all else fails...
Best,
Frank