在我以前的工作场所中,我们曾经使用Keil muvision IDE开发了许多ARM v7汇编代码。对于我而言,滥用WHILE指令进行代码行的可参数化复制变得非常普遍(请参见示例,该示例在Keil IDE中有效)。
我现在想移植一些代码,以使其在我的树莓派上运行。离开了keil IDE所能提供的便利时,我设法解决了我可能会遇到的所有问题,但是我为最后一部分而苦苦挣扎。 GCC无法识别任何WHILE指令指令(WHILE,WEND,GBLA等)。知道如何解决该问题,或者是否有与WHILE指令等效的指令,这些指令不会影响时序或代码大小?
我通过调用以下命令进行编译: gcc main.c * .h * .S -o exe
GBLA var
var SETA 0
WHILE var < DEFINED_VALUE
LDR R4, [R7, #var*4]
EOR R4, R4, R5, LSL #16
STR R4, [R0, #var*4]
var SETA var+1
WEND
答案 0 :(得分:1)
您可以使用指令 public override void OnException(HttpActionExecutedContext filterContext)
,.set
/ .rept
和.endr
来实现所需的目标。
示例:
.set
结果如下:
.set var, 0
.rept 5
LDR R4, [R7, #var*4]
EOR R4, R4, R5, LSL #16
STR R4, [R0, #var*4]
.set var,var+1
.endr
另请参阅:Useful assembler directives and macros for the GNU assembler。