I am trying to understand how to use pointer in assembly. By reading some tutorials around internel,I think had undertantood some concepts. But when I'II go to try it,it did work. Below some attempts to translate C to ASM.
C
const char *s = "foo"; unsigned z = *(unsigned*)s; if(!(z & 0xFF)) do_something(); if(!(z & 0xFFFF)) do_b_something(); (here's not full code,but it's a word-check,thefore,there is more two stmts which checks 0xFF0000,0xF000000 respectivily.
ASM:
mov ebp,str mov eax,ebp mov eax,[eax] and eax,0xFF cmp eax,0 je etc mov eax,[eax] and eax,0xFFFF cmp eax,0 je etc It returns a seg fault.
And the try:
mov eax,dword ptr [eax] that's generated by gcc compiler and you can see it in some other assemblies code,returns
invalid symbol
on FASM assembler. It isn't really supported by the FASM or am I missing something?
dword ptris needed by MASM and not much else. Just use the plain brackets. The seg fault is likely due to usingeaxas pointer after destroying it. tip: usetest