Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly 在ARM部件中写入文件_Assembly_Arm_System Calls - Fatal编程技术网

Assembly 在ARM部件中写入文件

Assembly 在ARM部件中写入文件,assembly,arm,system-calls,Assembly,Arm,System Calls,我对ARM组装(使用raspberry pi)相当陌生,无法写入文件 我在下面写的代码将数组的地址调用到R3(从C++驱动程序调用),然后将数组的内容输出到文件。 不幸的是,我发现我的数组存储得很好(因为我可以在下一个数字中看到寄存器),但是我试图保存在文件中的整数丢失了。在调试器中,我可以看到值被放入R1中,但它没有被写入文件(这些是范围为1-100的整数) 我找到了各种x86解决方案,以及关于字符串的解决方案,但我找不到关于整数的帮助 我正在利用提供给我的书中的文本,但它似乎不能帮助我理解

我对ARM组装(使用raspberry pi)相当陌生,无法写入文件

我在下面写的代码将数组的地址调用到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
不应该包含要写入的数据的地址吗?