gpt4 book ai didi

在 GNU 汇编中使用重复 block 或宏调用函数表

转载 作者:行者123 更新时间:2023-12-01 13:52:22 28 4
gpt4 key购买 nike

如果我想生成如下所示的代码:

CALL FUNC0
CALL FUNC1
CALL FUNC2
CALL FUNC3
CALL FUNC4
CALL FUNC5
...
CALL FUNC19

我怎样才能使用重复 block 生成这样的代码,使用类似于下面的代码:

.equ SYMBOL, 0
.rept 20
CALL FUNC(SMYBOL)
.equ SYMBOL, (SYMBOL+1)
.endr

宏也很好。

我也想知道如何在 C 中执行此操作。

最佳答案

您可以使用宏来执行此操作:

.altmacro
.macro call_funcs count
.if \count
call_funcs %(count-1)
.endif
CALL FUNC\count
.endm

call_funcs 20

.altmacro 指令允许使用 % 在作为宏参数递归传递之前评估 count - 1。否则你会得到 CALL FUNC20-1-1-1-1 这不是你想要的。

据我所知,在 C 中无法实现您想要的。为此,我会编写一个程序来生成您需要的 C 代码。

关于在 GNU 汇编中使用重复 block 或宏调用函数表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30764210/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com