From: <p1...@ja...> - 2010-12-18 09:04:31
|
On 12/17/2010 4:37 AM, Jakob Bohm wrote: > On 17-12-2010 07:27, Littlefield, Tyler wrote: >> hello all, >> I have a quick question. >> I have the following: >> section .data >> ptr dd 0 >> array times 100 db 0 >> >> Now, when I want to assign array to p, I can't mov it--how can I assign >> the pointer to point there? Last, is there a way to get the type of >> processor? >> (32-64), as that will make a difference on the code in some places? >> > ; For 32 bits, I think this should assemble just fine: > > ptr dd 0 > array times 100 db 0 > > mov [ptr], array > > ; For 64 bits, The code should become > > ptr dq 0 > array times 100 db 0 > > lea rax,[array] ; Add some notation here to make this rip relative! > mov [ptr], rax > > I don't know how to test if nasm is compiling for 16, 32 or 64 bits with > assembler directives, > sorry I don't do that much nasm coding these days. > Here is one way: %ifidn __BITS__,64 ptr dq 0 %else ptr dd 0 %endif |