Ich erhalte einen Fehler - Segmentierung Fehler (Fehler 139), wenn ich versuche, mein Assembly-Programm zu starten. Wie ich es verstehe, ist es, weil ich Register über R3 verwende, und sie nicht zum Anfangszustand zurückbringen. Wie kann ich das machen?ARM Assembly-Register in den Ausgangszustand zurückkehren
Unten ist mein Code, was könnte das Problem sein?
.text
.align 2
.global matmul
.type matmul, %function
matmul:
@-- check if matrices can be multiplied
cmp r1,r3
beq loadvalues @-- matrices can be multiplied
mov r0,#1
bx lr
@-- load matrice values
loadvalues:
stmdb SP!, { r4-r15 }
ldr r4, [sp, #0]
ldr r5, [sp, #4]
ldr r6, [sp, #8]
mov r7, #0
mov r8, #0
mov r9, #0
mov r10, #4
b firstloop
mov r0, #0
bx lr
@-- Loop r7 to r0
firstloop:
cmp r7, r0
blt firstloopex
firstloopex:
add r7, r7, #1
b secondloop
LDMIA SP!, { r4-r15 }
endfirstloop:
mov r0, #0
bx lr
@-- Loop r8 to r4
secondloop:
cmp r8, r4
blt secondloopex
secondloopex:
add r8, r8, #1
b thirdloop
endsecondloop:
mul r11, r7, r8
mul r11, r10, r11
sub r11, r11, r10
str r0, [r6, r11]
mov r8, #0
@-- Loop r9 to r1
thirdloop:
cmp r9, r1
blt thirdloopex
thirdloopex:
add r9, r9, #1
@-- load value of matrice 1
mul r11, r7, r9
mul r11, r10, r11
sub r11, r11, r10
ldr r12, [r2, r11]
@-- load value of matrice 2
mul r11, r9, r8
mul r11, r10, r11
sub r11, r11, r10
ldr r13, [r5, r11]
@-- sum up value
mul r14, r12, r13
add r0, r0, r14
endthirdloop:
mov r9, #0
'drücken 'Sie das Register, bevor Sie es modifizieren,' pop' es vor der Rückkehr? – EOF
Es sieht so aus, als würden Sie bereits gespeicherte Register speichern (oder zumindest versuchen). Besonders hervorzuheben sind jedoch "LDMIA SP !, {r4-r15}" und "ldr r13, [r5, r11]". Versuchen Sie einmal, in einem Debugger durchzugehen (wenn Sie sie überhaupt erreichen) und zu sehen, was danach passiert . Dann geh und schaue nach, welche Rollen 'r13' und' r15' dienen ...;) – Notlikethat
Du scheinst für ARMs Propaganda über die Architektur mit einer großen Allzweck-Registerdatei gefallen zu sein. Es tut nicht. Lesen Sie auch das Referenzhandbuch zur Architektur. – EOF