如何创建一个扩展为“(x+y*240)*2”之类的表达式的 GNU GAS 宏?

Nat*_*pos 5 macros assembly gnu-assembler

我正在使用 GAS 为 ARM Linux 构建程序,但我想做一些宏以使我的开发更加智能。那我想知道:

我怎么能为此做一个宏:(x+y*240)*2, wasxyare int,它将像这样使用:

mov r0, MACRO_SHOULD_BE_CALLED_HERE
Run Code Online (Sandbox Code Playgroud)

我怎么能做一个应该像这样调用的宏:

JUST_MACRO_CALLED_HERE_TO_DO_SOMETHING
Run Code Online (Sandbox Code Playgroud)

这只会做一些已经在其中定义的事情,例如打印功能。

另外,如果我需要宏或函数调用的一些参数。我怎么能做到?

PS:r0是一个ARM寄存器,比如eaxx86

Joe*_*Joe 3

GAS 与 NASM 比较 - 宏显示了执行参数化宏的方法,但它是简单的替换。

  • 链接现已关闭,但[在回程机器上]仍然可用(http://web.archive.org/web/20090215122116/http://www.ibm.com/developerworks/library/l-gas-nasm。 html)。 (9认同)