Имам проста функция, написана на 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
syscall на Linux, като използва инструкцията svc
.