ARM Сборка Печать большого и неправильного значения - PullRequest
0 голосов
/ 17 февраля 2020

Вот то, что я считаю наиболее релевантным кодом, есть другие значения, сохраненные вплоть до [fp, # -24]. Я пытался жестко кодировать значения в [fp, # -8] и [fp, # -12]. Я не уверен, происходит ли какое-то неправильное управление стеками или я просто пропускаю какой-то важный компонент функции printf.

.data

var: .word

prompt1: .asciz "Largest number:\n"
prompt2: .asciz "Smallest number:\n"
input: .asciz "%d"
test: .asciz "%d and %d\n"

.align 2
.text
.align 2

.global main

.func main
main:
    push {fp, lr}
    add fp, sp, #4


    sub sp, sp, #20

    ldr r0, =prompt1
    bl printf

   @  var1
    ldr r0, =input
    sub r1, fp, #8
    bl scanf

    ldr r0, =prompt2
    bl printf

    @ var2
    ldr r0, =input
    sub r1, fp, #12
    bl scanf

    ldr r0, =test
    str r1, [fp, #-8]
    str r2, [fp, #-12]
    bl printf

sub sp, fp, #4
pop {fp, pc}
.endfunc

возвращает

 [large number] and 0

РЕДАКТИРОВАТЬ: потенциально полезная информация из GDB

(gdb) start
Temporary breakpoint 1 at 0x10438: file gcd.s, line 19.
Starting program: /home/pi/gcd 

Temporary breakpoint 1, main () at gcd.s:19
19      push {fp, lr}
(gdb) step
21      add fp, sp, #4
(gdb) step
24      sub sp, sp, #20
(gdb) step
26      ldr r0, =prompt1
(gdb) step
27      bl printf
(gdb) step
__printf (format=0x21048 "Largest number:\n") at printf.c:33
33  printf.c: No such file or directory.
(gdb) step
_IO_vfprintf_internal (s=0xb6fb7d90 <_IO_2_1_stdout_>, 
    format=0x21048 "Largest number:\n", format@entry=0x0, ap=..., ap@entry=...)
    at vfprintf.c:1278
1278    vfprintf.c: No such file or directory.
(gdb) step
1282    in vfprintf.c
(gdb) step
1293    in vfprintf.c
(gdb) step
1315    in vfprintf.c
(gdb) step
__find_specmb (format=<optimized out>) at vfprintf.c:1304
1304    in vfprintf.c
(gdb) step
_IO_vfprintf_internal (s=0xb6fb7d90 <_IO_2_1_stdout_>, 
    format=0x21048 "Largest number:\n", format@entry=0x0, ap=..., ap@entry=...)
    at vfprintf.c:1315
1315    in vfprintf.c

полный пастин

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...