Fragen zu MIPS Assembler

  • Sonstige

Es gibt 1 Antwort in diesem Thema. Der letzte Beitrag () ist von hal2000.

    Fragen zu MIPS Assembler

    Hallo zusammen,
    bin gerade dabei, mich im Rahmen meines Studiums mit MIPS-Assembler zu beschäftigen, habe allerdings einige kleinere Verständnisprobleme:

    1. Was machen die Befehle "ori" und "andi" ?

    Ich weiß, dass es sich dabei um ODER bzw. UND handelt, habe mir auch schon entsprechende Befehlsreferenzen angesehen, bin aber immer noch ratlos hinsichtlich der Frage, was genau "ori" und "andi" mit zwei Zahlen machen.

    2. Wie kann ich eine Variable mit negativem Wert deklarieren/initialisieren ?

    Ich weiß, dass es über einige Methoden möglich ist, auch mit negativen Zahlen im Zweierkomplement zu rechnen, soll im Rahmen einer Aufgabe jedoch einem Wert bereits von Beginn an einen negativen Wert zuweisen. Wie genau soll das in MIPS-Assembler funktionieren ? (als Binärzahl)

    Ich hoffe, wir haben hier jemanden, der sich mit Assembler auskennt und bedanke mich schonmal für eure Hilfe ;)
    1. Nicht zwei Zahlen, sondern Register und Zahl.

    ori = "bitwise or immediate", d.h. Register = Register OR [Konstante]

    Beispiel:
    Register: $t0 = 7, als Bitmuster ausgedrückt 00....00111
    Befehl: ori $t0, 8 (Bitmuster von 8 ist ...001000)
    Ergebnis: $t0 = 00...01111 oder 15.

    andi: Analog, nur mit UND statt ODER.

    2. Angenommen, ein positiver Wert befindet sich in Register $t0. Du kannst ihn negieren, indem du das Komplement bildest (Kippen aller Bits und 1 addieren).

    Quellcode

    1. xori $t0, $t0, 0xFFFFFFFF #Kippen = XOR mit 1111...1 (xor immediate)
    2. addi $t0, 1 #1 Addieren


    alternativ: -x = 0-x, d.h.

    sub $t0, $zero, $t0

    Direkte Zuweisung: den Wert vorher in Komplementdarstellung bringen (z.B. -6 = 111...1010 = 0xFFFFFFFA) und so definieren / laden:

    Quellcode

    1. .data
    2. value: .word 0xFFFFFFFA
    3. .text
    4. main:
    5. lw $a0, value
    6. li $v0, 1
    7. syscall // Ausgabe: -6


    siehe auch: mrc.uidaho.edu/mrc/people/jff/digital/MIPSir.html
    Gruß
    hal2000