Ошибка ассемблера во время выполнения на coreb bf561 - PullRequest
0 голосов
/ 25 февраля 2012

Может ли кто-нибудь подсказать мне, как решить эту ошибку:

Во время выполнения моя программа вылетает на голом металле 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*
...