Hi, ich hab mal ne Frage, evtl kennt sich ja jemand damit aus. Ich versuche mit dem DLX Simulator direkt einen Integerwert in einem Register abzulegen. Im Befehlssatz gibt es einen Befehl, der LHI heißt, mit folgender Beschreibung: LHI Rd,Imm Kopiert den direkt angegebenen 16-Bit-Wert in die höhere Hälfte von Rd und füllt die unteren 16 Bit mit Nullen. Das ist ganz schön und gut, aber ich suche eigentlich einen Befehl, der die vollen 32 Bit ausnutzt, finde aber keinen. Ich habe es aber mit zwei Methoden "hingebogen" Entweder ich nehme das Register 0, das immer null ist, addiere dort meine Zahl drauf, in dem Fall 0x15 und speichere das in meinem Register. Das geht mit dem Befehl ADDI. Oder ich shifte das ganze um 16 bit nach rechts mit SRA: Entweder: ADDI R1,R0,0x15; Oder: LHI R2,0x15; SRA R2,R2,16; Macht man das so, oder gibt es einen Befehl, der das direkt ausführt? Danke
Vielleicht hilft dies: http://de.wikipedia.org/wiki/DLX-Mikroprozessor#DLX_Befehlssatz >Instruction Instruction meaning >LB LH LW R1,val(R2) Load byte load half word load word Rainer
Leider nicht, da diese Befehle laut "echter" Doku dafür da sind, um von einem Register den Wert in ein anderes zu Laden... Ich hatte aber schon versucht einen Wert zu verwenden, da meckert er...
Mike Mike schrieb: > Kopiert den direkt angegebenen 16-Bit-Wert in die höhere Hälfte > von Rd und füllt die unteren 16 Bit mit Nullen. > > Das ist ganz schön und gut, aber ich suche eigentlich einen Befehl, der > die vollen 32 Bit ausnutzt, finde aber keinen. Die Opcodes sind 32 Bit lang, wo soll da noch ein 32 Bit Immediate Platz finden? Um eine 32 Bit Konstante zu laden wird es auf ein LHI mit folgendem ADDI hinauslaufen. Wenn nur ein 16 Bit Wert geladen werden muss und R0 immer 0 ist, dann "ADDI Rx, R0, #wert". Oder ORI, kommt aufs selbe raus. In Befehlssätzen werden oft auch Pseudo-Instruktionen definiert, die solche Dinge erledigen und Assembler leichter zu schreiben und zu lesen machen. Die werden dann vom Assembler in passende Maschinen-Instruktionen übersetzt. Etwa "LI Rx, #wert" das dann in LHI+ADDI übersetzt würde.
Ah jetzt macht das ganze natürlich Sinn. Da hätte ich auch selber draufkommen können. Danke dir vielmals :)
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.