"Junk after expression" 使用 GNU 汇编程序宏
"Junk after expression" using GNU Assembler macro
我大致按照 this guide 设置一个简单的 OS。它提供了一些用于 NASM 的程序集,但我使用的是 GNU 汇编程序。
在我正在使用的程序集文件的顶部
.intel_syntax noprefix
我定义了一个这样的宏
.macro no_error_code_handler num
.global interrupt_handler_\num
.type interrupt_handler_\num, @function
interrupt_handler_\num:
push dword 0
push dword \num
jmp common_int_handler
.endm
如果重要的话,common_int_handler
在附近定义为
common_int_handler:
pushad
call int_handler # This is a C function
popad
add esp, 8
iret
然后最后我得到了这条线
no_error_code_handler 0
我希望扩展到类似
.global interrupt_handler_0
.type interrupt_handler_0, @function
interrupt_handler_0:
push dword 0
push dword 0
jmp common_int_handler
编译时,no_error_code_handler 0
行出现错误,说
Assembler messages:
Error: junk `0' after expression
Error: junk `0' after expression
它是否与将类型定义为函数有关,即使它的行为不像普通函数?自从我在 iret
指令之后离开后,我应该在某个地方使用 .exitm
吗?
以下行导致错误
push dword 0
push dword \num
dword
在此上下文中无效。
push 0
push \num
删除双字可以解决问题
我大致按照 this guide 设置一个简单的 OS。它提供了一些用于 NASM 的程序集,但我使用的是 GNU 汇编程序。
在我正在使用的程序集文件的顶部
.intel_syntax noprefix
我定义了一个这样的宏
.macro no_error_code_handler num
.global interrupt_handler_\num
.type interrupt_handler_\num, @function
interrupt_handler_\num:
push dword 0
push dword \num
jmp common_int_handler
.endm
如果重要的话,common_int_handler
在附近定义为
common_int_handler:
pushad
call int_handler # This is a C function
popad
add esp, 8
iret
然后最后我得到了这条线
no_error_code_handler 0
我希望扩展到类似
.global interrupt_handler_0
.type interrupt_handler_0, @function
interrupt_handler_0:
push dword 0
push dword 0
jmp common_int_handler
编译时,no_error_code_handler 0
行出现错误,说
Assembler messages:
Error: junk `0' after expression
Error: junk `0' after expression
它是否与将类型定义为函数有关,即使它的行为不像普通函数?自从我在 iret
指令之后离开后,我应该在某个地方使用 .exitm
吗?
以下行导致错误
push dword 0
push dword \num
dword
在此上下文中无效。
push 0
push \num
删除双字可以解决问题