Assembly 如何写入';已使用malloc在ARM部件中创建了
我正在尝试写入一个数组,该数组是在ARM汇编中使用malloc在堆上创建的。我似乎不知道该怎么做。当我尝试打印.cpp文件中的数组时,只打印值0 目前我有这个Assembly 如何写入';已使用malloc在ARM部件中创建了,assembly,arm,Assembly,Arm,我正在尝试写入一个数组,该数组是在ARM汇编中使用malloc在堆上创建的。我似乎不知道该怎么做。当我尝试打印.cpp文件中的数组时,只打印值0 目前我有这个 .text .global wr wr: push {lr} mov r0, #12 mov r1, #5 mov r2, #6 mov r3, #7 mov r7, #0 bl malloc pop {lr} mov
.text
.global wr
wr:
push {lr}
mov r0, #12
mov r1, #5
mov r2, #6
mov r3, #7
mov r7, #0
bl malloc
pop {lr}
mov pc, lr
str r1, [r0, r7, lsl #2]
add r7, r7, #1
str r2, [r0, r7, lsl #2]
add r7, r7, #1
str r3, [r0, r7, lsl #2]
mov pc, lr
将来我可能会将其放入一个循环中,但此时我只想写入数组
编辑:我将名称从“write”更改为“wr”。您是否意识到您的写入代码从未到达,因为您使用
mov pc,lr从函数返回?学习使用调试器。write
是函数名的错误选择。已经有一个POSIX标准函数叫:不,我没有意识到那个小丑。你能推荐一个调试器吗?我只是在Linux终端中使用g++-arm Linux编译器来完成这项工作。我似乎不知道如何让gdb一步一步地运行以测试代码。stepi
或si
是gdb中的step指令。谢谢Jester。您确实意识到您的编写代码永远无法到达,因为您使用mov pc,lr
从函数返回?学习使用调试器。write
是函数名的错误选择。已经有一个POSIX标准函数叫:不,我没有意识到那个小丑。你能推荐一个调试器吗?我只是在Linux终端中使用g++-arm Linux编译器来完成这项工作。我似乎不知道如何让gdb一步一步地运行以测试代码。stepi
或si
是gdb中的step指令。谢谢Jester。