【问题标题】:How to declare and load multiple array values into RAM with ARM assembly?如何使用 ARM 程序集声明多个数组值并将其加载到 RAM 中?
【发布时间】:2015-04-05 14:59:49
【问题描述】:

我想像在 C 中一样在内存中创建一个数组

int i[] = {0,2,3,124,324,23,3,2}

如何在 ARM 汇编中做到这一点?显然我可以声明一些像这样的值:

AREA     mydata, DATA
array    DCD 0,2,3,124,324,23,3,2

但是如何以最简单的方式将它们复制到 RAM 中呢?

【问题讨论】:

    标签: assembly arm cpu-registers disassembly cortex-m3


    【解决方案1】:

    当你用你给定的行组装/链接一个文件时,这些值将已经存储在 RAM 中。将有一个称为“数组”的符号,它表示指向数据的指针。

    如果你想从另一个文件访问符号,你还需要在包含定义的文件中添加一个 EXPORT 指令,例如

    EXPORT array
    

    并在您希望使用该符号的文件中添加一个 IMPORT 指令,例如

    IMPORT array
    

    您还可以通过查看编译器的汇编语言输出来检查汇编器语法,该编译器编译包含您的 i 声明的简单源文件。

    【讨论】:

    • 数组应该存储在哪个内存位置?我预计它会在 0x20000000,但事实并非如此。
    • 链接器将根据自己的算法放置符号。您可以使用 LDR r0,=array 之类的方式获取指向数组的指针,它将数组的地址加载到 r0
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多