PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : ARM Assembler Programm-Verständnis-Hilfe


BodyLove
2005-05-02, 19:42:20
Hi,

brauche bezüglich dieses Programms Hilfe beim Verständnis. Soweit mir bekannt, habe ich bei den verschiedenen Befehlen Erklärungen mit zu geschrieben, wobei ich nicht sicher bin, ob diese auch richtig sind. Ich wäre euch sehr verbunden, wenn ihr diese mal kurz kontrollieren könntet, bzw. die Besonderheiten der Befehle nennt. Für eine Seite, wo man dies nachschlagen kann, wäre ich ebenfalls sehr dankbar.

.file "Rahmen_logik.S"
.text
.align 2
.global main
.type main,function
main:
@ args = 0, pretend = 0, frame = 12
@ frame_needed = 1, uses_anonymous_args = 0

ADR r0,A // Adresse der Variablen in Register0 Laden
LDR r1, [r0] // Wert von Register0 in Register 1 Laden
ADR r0,B // Adresse der Variablen in Register0 Laden
LDR r2,[r0] // Wert von Register0 in Register 2 Laden
ADR r0,C // Adresse der Variablen in Register0 Laden
LDR r3, [r0] // Wert von Register0 in Register 3 Laden
ADR r0,D // Adresse der Variablen in Register0 Laden
LDR r4,[r0] // Wert von Register0 in Register 4 Laden

LDR r0,=0x0000003F // Maske Laden für mod 64
ADD r5,r2,r3 // r2 und r3 addieren (B+C)
AND r5,r5,r0 // Mod 64 bits eintragen in r5
LDR r0,=0x000003F0 // Maske Laden für bit 4-9
BIC r12,r12,r0 // In R12 das ergebnis von Bitclear zwischen r12 und r0 schreiben
ORR r12,r12,r5 // r12 wird eingesetzt durch die geänderten Bits von r5 (OR Funktion)
MVN r5,r1 // r1 wird negiert in r5 geschrieben
ADD r5,r5,#1 // addiere 1 für 2er Komplement darstellung
LDR r0,=0x000E3C00 // Maske zum Clearen wird geladen
BIC r12,r12,r0 // Bitclear wird durchgeführt auf r12
AND r5,r5,r0 // Bits 5-0 von r5 werden in abgeschnitten
ORR r12,r12,r5 // Bits werden in r12 geschrieben
MVN r5,r1 // r1 Bits werden negiert und in r5
LDR r0,=0x3f000000 // Maske für Bitclear wird geladen Bits 20-18, 14-11
BIC r12,r12,r0 // Bitclear wird durchgeführt
AND r5,r5,r0 // Maske r0 wird aus r5 auschgschnitten
ORR r12,r12,r5 // r5 wird in r12 eingesetzt

mov pc, lr
// Variablen
A: .word 0xC76C9C79
B: .word 41
C: .word 55
D: .word 5
.Lfe1:
.size main,.Lfe1-main
.ident "GCC: (GNU) 3.2.1"


Ich habe mal euch die Fragestellung angehängt. Sry für die Fragerei, ich bedanke mich aber im voraus.

Danke, Memo.:)

http://img259.echo.cx/img259/7636/mikro7kq.th.jpg (http://img259.echo.cx/my.php?image=mikro7kq.jpg)

Marscel
2005-05-02, 23:40:41
Könnte vielleicht helfen:

http://www1.cs.columbia.edu/~cs4824/arm_std/asm.html

BodyLove
2005-05-03, 09:18:00
Danke, hilft ein wenig.:)