У меня есть простая функция, написанная на ассемблере ARM. При первом запуске все работает как надо (выводит BOOT\n
). Однако при втором выполнении функции ничего не печатается.
.globl __printTest
.text
.align 2
__printTest:
sub sp, #64 /* yes, I know this is too much */
mov r0, #66
str r0, [sp]
mov r0, #79
str r0, [sp, #1]
mov r0, #79
str r0, [sp, #2]
mov r0, #84
str r0, [sp, #3]
mov r0, #10
str r0, [sp, #4]
mov r0, #0
mov r1, sp
mov r2, #5
bl _write
add sp, #64
bx lr
В чем может быть проблема? Я подозреваю, что это каким-то образом портит буфер, и он больше не работает. Write — это функция, которая вызывает системный вызов write
в Linux с помощью инструкции svc
.