如何将 GNU GAS 宏参数与其他标记连接起来形成单个标签?
我想使用气体宏在汇编函数中动态创建一组标签。我想做这样的事情:
.macro set_up_jumptab_entry prefix, from=0, to=10 .quad \prefix_\item .if \to-\from set_up_jumptab_entry \prefix,"(\from+1)",\to .endif .endm set_up_jumptab_entry myfunc 0 10
这里 \prefix_\item 类似于 myfunction_7。现在,我可以找到很多递归调用的示例,但我还没有找到涉及传入宏参数的标签串联之一。 Gas 的记录很少,所以回答这个问题对我来说很困难。
- 您可以将宏的参数与其他标记连接起来以形成单个标记吗?
- 您最喜欢的气体组装机参考是什么?
I would like to dynamically create a set of labels in an assembly function using a gas macro. I would like to do something like this:
.macro set_up_jumptab_entry prefix, from=0, to=10 .quad \prefix_\item .if \to-\from set_up_jumptab_entry \prefix,"(\from+1)",\to .endif .endm set_up_jumptab_entry myfunc 0 10
Here \prefix_\item would be something like myfunction_7. Now, I can find lots of examples of recursive invocation, but I haven't found one of just label concatenation involving passed-in macro arguments. Gas is quite poorly documented, so answering this question is difficult for me.
- Can you concatenate arguments to macros with other tokens to make single tokens?
- What's your favorite gas assembler reference?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
像这样的东西
应该创建一个由 argA 和 argB 组成的标签。
编辑
测试,
\()
似乎没有必要;测试代码是:这只是一个最小 C 代码的
gcc -S test.c
输出(懒惰:D)。 (prova
在意大利语中的意思是测试
)things like
should create a label composed by argA and argB.
EDIT
Testing,
\()
seems to be not necessary; the test code was:which is just
gcc -S test.c
output (lazyness:D) of a minimal C code. (prova
meanstest
in italian)文档很好地介绍了这一点https://sourceware。 org/binutils/docs/as/Macro.html
The docs cover this one quite well https://sourceware.org/binutils/docs/as/Macro.html