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

标签 assembly macros gnu-assembler

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

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

mov r0, MACRO_SHOULD_BE_CALLED_HERE

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

JUST_MACRO_CALLED_HERE_TO_DO_SOMETHING

这只会执行其中已定义的操作,例如打印函数。

此外,如果我需要宏或函数调用的一些参数。我怎样才能做到呢?

PS:r0是一个ARM寄存器,就像x86的eax

最佳答案

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

关于assembly - 如何创建一个扩展为 "(x+y*240)*2"之类的表达式的 GNU GAS 宏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3127905/

相关文章:

c - 使用 ARM 内联汇编在没有 libc 的情况下进行系统调用

assembly - 长多字节 NOP : commonly understood macros or other notation

assembly - 如何在汇编宏中以立即值作为参数编写 riscv CSR?

c - 将地址作为符号加载到通用寄存器中

程序集 8086 - 异或操作

使用宏时 C 结构数组初始化问题

scala - 如何理解和使用scala宏,编写更复杂的函数

c - 宏定义

gcc - Gnu AS 似乎不预处理#defines,但 GCC 会

debugging - DOS DEBUG 跟踪命令无法按我的预期工作