Etwas verwirrt: sp/fp(bp) per inline-Assembler laden



  • Hab nie Asm gelernt, aber durch dieverses Debuggen lernt mal halt bischen und nun wollte ich mir den Framepointer in C holen. Architektur: AMD64

    void *fp;
    //gcc syntax
    asm("movq %%ebp, %0;" :"=r"(fp));
    

    Daraus wird dann:

    movq %ebp, %rax
    

    Aber da meckert der Assembler: Error: suffix or operands invalid for `mov'
    Wenn ich einen 4Byte-Typ (int) fuer fp verwende gehts. Aber warum denn? Ein void* ist 8Byte gross, genau wie ebp.



  • Ok hat sich geklaert muss natuerlich aus %rbp lesen. Bin da immer etwas verwirrt seit dem 64bit Zeug.


Anmelden zum Antworten