Macro a gnu gas-ban

Macro a gnu gas-ban
2015-03-17T21:46:22+01:00
2015-03-18T18:53:32+01:00
2022-07-19T03:36:05+02:00
shammy
Hogyan lehet GAS-ban paraméter nélküli makrót csinálni? Így próbálom:

.macro pushall
    push r0
    push r1
 ....
    push r30
    push r31
.endm

És a tesztelése:
    ....
    pushall
    call valami
    popall   // persze van ilyen macro is
    ....

Fordításkor hibaüzenet nincs, csak éppen nem generálódik semmiféle kód a pushall ill. popall hatására. Ebből próbáltam visszaegyszerűsíteni:
The GNU Assembler
Mit rontok el?
Mutasd a teljes hozzászólást!

  • Validnak valid amit csinálsz, valami más hiba lesz ott.

    Például nállam ez a kód simán fordul és működik is:

    # Compile: # c:\mingw64\bin\gcc -g -o minimal_gcc_printf_x64.exe minimal_gcc_printf_x64.s .intel_syntax noprefix .global main regfmt: .asciz "rax: %zu rbx: 0x%.16X rcx: 0x%.16X rdx: 0x%.16X\n" .macro printregs sub rsp, 0x28 mov QWORD PTR[rsp+0x20], rdx mov r9, rcx mov r8, rbx mov rdx, rax mov rcx, offset regfmt call __mingw_printf add rsp, 0x28 .endm .data .text main: xor rax, rax printregs printregs printregs ret
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd