Assembly 在ARM部件中写入文件
我对ARM组装(使用raspberry pi)相当陌生,无法写入文件Assembly 在ARM部件中写入文件,assembly,arm,system-calls,Assembly,Arm,System Calls,我对ARM组装(使用raspberry pi)相当陌生,无法写入文件 我在下面写的代码将数组的地址调用到R3(从C++驱动程序调用),然后将数组的内容输出到文件。 不幸的是,我发现我的数组存储得很好(因为我可以在下一个数字中看到寄存器),但是我试图保存在文件中的整数丢失了。在调试器中,我可以看到值被放入R1中,但它没有被写入文件(这些是范围为1-100的整数) 我找到了各种x86解决方案,以及关于字符串的解决方案,但我找不到关于整数的帮助 我正在利用提供给我的书中的文本,但它似乎不能帮助我理解
我在下面写的代码将数组的地址调用到R3(从C++驱动程序调用),然后将数组的内容输出到文件。 不幸的是,我发现我的数组存储得很好(因为我可以在下一个数字中看到寄存器),但是我试图保存在文件中的整数丢失了。在调试器中,我可以看到值被放入R1中,但它没有被写入文件(这些是范围为1-100的整数)
我找到了各种x86解决方案,以及关于字符串的解决方案,但我找不到关于整数的帮助 我正在利用提供给我的书中的文本,但它似乎不能帮助我理解output:
mov r5, #0
externalSave:
LDR R0, =fileOutput @name of file required
MOV R1, #0101 @write ONLY + create file if it does not exist/overwrite
LDR R2, =0666 @accessability to users assigned
MOV R7, #5 @R7 = SYSCALL = 'open'
SVC 0
MOV R9, R0 @backup to R9 the file descriptor value
write:
cmp r6, r5 @Comparison between Array size and count
ble writeEnd
add r3, r4, r5, LSL #2 @4 Byte shift to grab next value in array
add r5, r5, #1 @Increase counter
LDR R1, [R3] @R1 = value in array R3 = Address of Array
MOV R11, R1 @backup of integer to write to file
MOV R2, #4 @R2 = number of bytes to write out
MOV R0, R9 @R0 = requires file descriptor value
MOV R7, #4 @R7 = SYSCALL = 'write'
SVC 0
skipCENDL:
CMP R6, R5
BEQ writeEnd
B write
writeEnd:
MOV R0, R9
MOV R7, #6
SVC 0
exit:
mov r0, r6
ldr r1, =return
ldr lr, [r1]
bx lr
R1
不应该包含要写入的数据的地址吗?R1
不应该包含要写入的数据的地址吗?