Assembler Beginner Frage

10/10/2007 - 21:35 von Roman Zeilinger | Report spam
Hi

Vielleicht kann mir mal jemand bei einem kleinen Assembler Problem
helfen. Und zwar moechte ich einen MIPS aehnlichen Assembler dazu
bringen mir die Variable _X im Speicher mit dem Wert 0x12341234 zu
initialiseren damit
ich im Hauptprogramm diesen mit einem ldw in ein Register laden kann.
Mit folgendem Codefragment haut das leider nicht nicht, es wird der wert
null geladen. Hat jemand eine Ahnung wie das ungefaehr gehen koennte,
der C-Compiler macht das irgendwie ueber das BSS Segment aber keine
Ahunung wie ich dies umsetzen kann...

Danke!

*********************************************************
* loadstore.asm
*********************************************************

** Start of data section
.data

** The (initialized) read variable _X
_X: .word 0x12341234 ; initialized data

** Beginning of text section
.text

** Now load the contents of _X in register R[1]
LDW R0, R1, _X //; R[1] = @_X
NOP
NOP
** End of program
NOP
.end
 

Lesen sie die antworten

#1 Ralph rkhb Bauer
10/10/2007 - 22:17 | Warnen spam
Roman Zeilinger schrieb:
Vielleicht kann mir mal jemand bei einem kleinen Assembler Problem
helfen. Und zwar moechte ich einen MIPS aehnlichen Assembler dazu
bringen mir die Variable _X im Speicher mit dem Wert 0x12341234 zu
initialiseren damit



"Ähnlich" ist bei Assembler tödlich. Jeder Assembler hat seine eigene
Syntax - und die noch auf den Prozessor bezogen. Gib' also an, welcher
Prozessor und welcher Assembler!

** Now load the contents of _X in register R[1]
LDW R0, R1, _X //; R[1] = @_X



Mir fallen ohne weitere Informationen nur sechs Möglichkeiten ein:

1) Tippfehler: LDW R0, R1, @_X (wie im Kommentar);
2) Falsche Registerreihenfolge: LDW R1, R0, _X;
3) Der Befehl LDW ist vielleicht nur für absolute Werte;
4) Es fehlt irgend etwas Klammriges: LDW R0, R1, (_X) (ohne Klammer wàre _X
dann die Adresse des Labels im Datensegment);
5) Der Befehl geht nur mit einem Register: LDW R1, _X (und làdt das zweite
Register automatisch);
6) .word 0x12341234 ist kein Word und wird ignoriert.

viele grüße
ralph

Ähnliche fragen