我很难理解ARM中的文件输入。我正在尝试使用.txt文件作为该程序的唯一参数来运行该程序,该参数包含一些整数,我无法取得任何进展。
对于我的作业,除了两个注释之间的代码(我自己编写的代码)之外,还为我提供了以下所有代码。 这是我到目前为止编写的代码。
.file "sum.s"
.text
.align 2
.global main
.type main, %function
main:
push {lr}
//my code
ldr r0, =rdfmt
sub sp, sp, #4
mov r1, sp
bl scanf
ldr r2, [sp, #0]
add sp, sp, #4
mov r1, r2
bl printf
ldr lr, [sp, #0]
add sp, sp, #4
mov pc, lr
//end my code
pop {pc}
.section .rodata
rdfmt: .asciz "%d"
prtfmt: .asciz "sum is %d\n"
我应该做的比上面的程序还要多,但是我只想说我希望能够在包含5个整数的.txt文件中打印第一个整数。
所以我的input.txt应该是
5
6
7
8
9
我的输出将是
5
答案 0 :(得分:1)
您好像忘记了传递printf
的格式。 r0
被调用了,因此它仍然没有指向该字符串的指针。实际上r0
保留了返回值。使用调试器和/或阅读电话会议/ ABI文档。
您还使用scanf转换结果作为返回地址,而不是返回值。