“表达后的垃圾”使用GNU Assembler宏
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了“表达后的垃圾”使用GNU Assembler宏相关的知识,希望对你有一定的参考价值。
我大致跟随this guide建立一个简单的操作系统。它提供了一些用于NASM的程序集,但我使用的是GNU汇编程序。
在我正在使用的汇编文件的顶部
.intel_syntax noprefix
我已经定义了一个像这样的宏
.macro no_error_code_handler num
.global interrupt_handler_
um
.type interrupt_handler_
um, @function
interrupt_handler_
um:
push dword 0
push dword
um
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
它是否与将类型定义为函数有关,即使它的行为不像普通函数?自从我离开.exitm
指令后,我应该在某处使用iret
吗?
答案
以下行导致错误
push dword 0
push dword
um
dword
在这方面无效。
push 0
push
um
删除dword解决了这个问题
以上是关于“表达后的垃圾”使用GNU Assembler宏的主要内容,如果未能解决你的问题,请参考以下文章