【问题标题】:AREA Field in ARM AssemblyARM 程序集中的 AREA 字段
【发布时间】:2014-10-02 01:23:38
【问题描述】:

您好,我正在使用 Keil uVision 编译器进行 ARM 汇编。我刚开始学习这个,我的程序中有以下代码。

AREA PROGRAM, CODE, READONLY
EXPORT SYSTEMINIT
EXPORT __MAIN
SYSTEMINIT
__MAIN
    MOV R1, #0X25
    MOV R2, #0X23
    END

当我构建目标时,它会说

test.s(1): error: A1163E: Unknown opcode PROGRAM, , 需要操作码或宏

我不知道为什么会这样。上面的代码是我作为示例运行的代码,以确保其正常工作。我不应该为AREA添加任何东西吗?任何帮助表示赞赏。

【问题讨论】:

    标签: arm keil


    【解决方案1】:

    该错误消息提供信息,如果有点难以破译:anything that starts in the first column is considered to be a label,因此汇编器看到一个名为“AREA”的标签,然后尝试将“PROGRAM”解释为助记符、宏或指令,这显然失败,因为它不是。

    简而言之,指令需要缩进,就像指令一样;这组装得很好:

        AREA PROGRAM, CODE, READONLY
        EXPORT SYSTEMINIT
        EXPORT __MAIN
    SYSTEMINIT
    __MAIN
        MOV R1, #0X25
        MOV R2, #0X23
        END
    

    【讨论】:

    • 谢谢。就是这样。很有帮助。
    【解决方案2】:

    AREA 指令指示汇编器汇编一个新的代码或数据段。节是由链接器操作的独立的、命名的、不可分割的代码或数据块。 语法

    AREA sectionname{,attr}{,attr}...
    

    地点:

    sectionname 是赋予该部分的名称。您可以为您的部分选择任何名称。

    因此,请检查您在两个地方是否具有相同的名称:AREA 指令之后和代码中的某处。

    进一步阅读指令,您可以找到here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多