kesalahan: sampah `bswapl eax movl %eax' setelah mendaftar

Saya mendefinisikan MAKRO dalam kode sumber GAS. Tapi itu tidak dikompilasi oleh gcc.

Berikut ini adalah MAKRO yang saya tentukan.

#define MSGSCHEDULE0(index) \
    movl (index*4)(%rsi)    ,%eax \
    bswapl eax \
    movl %eax   ,(index*4-272)(%rdi)

Di bawah ini adalah pesan Assembler:

kesalahan: sampah `bswapl eax movl %eax' setelah mendaftar

Saya ingin menggunakan MAKRO ini dalam kode saya sebagai berikut:

MSGSCHEDULE0(0)
MSGSCHEDULE0(1)
MSGSCHEDULE0(2)
//...
MSGSCHEDULE0(16)

person Land    schedule 30.08.2019    source sumber


Jawaban (1)


Gunakan titik koma untuk memberi sinyal pada GAS di akhir baris:

#define MSGSCHEDULE0(index) \
    movl (index*4)(%rsi),%eax; \
    bswapl %eax; \
    movl %eax,(index*4-272)(%rdi)

Jangan lupa tanda persentase untuk register.

person rkhb    schedule 03.09.2019
comment
Terima kasih, saya baru mengenal bensin. - person Land; 09.09.2019