使用GCC时如何修复WHILE指令?

时间:2019-06-27 13:17:15

标签: gcc arm

在我以前的工作场所中,我们曾经使用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

1 个答案:

答案 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