Может ли кто-нибудь подсказать мне, как решить эту ошибку:
Во время выполнения моя программа вылетает на голом металле coreb:
.....
COREB: test mdct36
COREB: execption 24 addr 3c0746c
COREB: coreb dump stack
COREB: found fp: ff700c1c
COREB: call frame 0 -12 feb05676
COREB: call frame 0 -11 00000000
COREB: call frame 0 -9 00000000
COREB: call frame 0 -8 ff700bec
.....
при отладке, эта строка кода ассемблерав причинах.
A1 = A0 = 0 || R3 = [P5++] || [I0--] = R1;
что-то не так с этим?
вот подробности отладки из GDB с использованием .align 8:
как раз перед:
p5 0x3c0b792 0x3c0b792
r3 0x8006a830 -2147047376
i0 0xff700c98 -9433960
r1 0xd73f1a2 225702306
sp 0xff700ca0 0xff700ca0
fp 0xff700cf4 0xff700cf4
a0x 0xffffffff -1
a0w 0xf1a24400 -241024000
a1x 0x0 0
a1w 0xd735c00 225664000
после исключения:
r0 *value not available*
for all registers value
с использованием .align 4, как предполагалось, так же, как и при аварийном завершении.значения регистров:
до сбоя:
p5 0x3c0b78e 0x3c0b78e
r3 0x10b57ee7 280329959
i0 0xff700c98 -9433960
sp 0xff700ca0 0xff700ca0
fp 0xff700cf4 0xff700cf4
a0x 0xffffffff -1
a0w 0xefb55880 -273328000
a1x 0x0 0
a1w 0xeed8880 250448000
после сбоя:
то же, что и раньше:
(
gdb) break +1
Breakpoint 3 at 0x3c0722c: file signal_processing/mdct36.asm, line 213.
(gdb) c
Continuing.
Program received signal SIGTRAP, Trace/breakpoint trap.
0xff600000 in ?? ()
(gdb) bt
#0 0xff600000 in ?? ()
(gdb) info registers
r0 *value not available*
r1 *value not available*
r2 *value not available*
r3 *value not available*