arm 汇编 dcd定义数组初始化了 为什么加载数据

时间:2021-12-03 01:07:36
memory map  我也改了为什么还是无法加载数据 我是在 keil中编程的
 
area aidaiy1, data, readwrite
data1 dcd 2,5,0,3,-4,5,0,10,9
data2  dcd 3,5,4,-2,0,8,3,-10,5
sum dcd 0,0,0,0,0,0,0,0

area aidaiy, code, readonly
entry
code32
Start ldr r1, =data1
ldr r2, =data2
ldr r3, =sum 
mov r0, #0

loop ldr r4, [r1], #04
ldr r5, [r2], #04
adds r4, r5
add r0, r0, #1
str r4, [r3], #04
bne loop   
b Start 


end

4 个解决方案

#1


[我把数据段  改为 readonly  就可以加载数据了  为什么? 不要沉、啊, 问题我已经 解决了 我和大家分享一下  在 memory map  中 自定义的数组 系统会自动分配到  0x40000000  开始的内存地址,但是在这个 range  内没有选择  exec(可执行) 选项  因此 无法加载数据 ,做法就是 将接下来类似的的几个全删掉, 自己再加上一个range (必须选上 exec 选项),,这样就可以了, 我想问一下你说的“将接下来类似的几个全删掉”是什么意思?删什么?然后那个exec选项是在哪里的?, 路过帮顶。

通常这类疑问我会重新梳理地址,数值,空间的联系和变化。]

#1


[我把数据段  改为 readonly  就可以加载数据了  为什么? 不要沉、啊, 问题我已经 解决了 我和大家分享一下  在 memory map  中 自定义的数组 系统会自动分配到  0x40000000  开始的内存地址,但是在这个 range  内没有选择  exec(可执行) 选项  因此 无法加载数据 ,做法就是 将接下来类似的的几个全删掉, 自己再加上一个range (必须选上 exec 选项),,这样就可以了, 我想问一下你说的“将接下来类似的几个全删掉”是什么意思?删什么?然后那个exec选项是在哪里的?, 路过帮顶。

通常这类疑问我会重新梳理地址,数值,空间的联系和变化。]