русский
Germany.ruForen → Архив Досок→ Programmierung

Дайте направление решения задачи.

16.05.15 18:50
Re: Дайте направление решения задачи.
 
lisenkalejka гость
lisenkalejka
in Antwort AlexNek 16.05.15 14:25, Zuletzt geändert 16.05.15 19:28 (lisenkalejka)
Nummer Name cs Bedeutung
$0 $zero — Hat beim Lesen immer den Wert 0
$1 $at — Wird vom Assembler verwendet; darf nicht vom Programmierer verwendet werden
$2–$3 $v0–$v1 nein Rückgabewerte eines Unterprogramms
$4–$7 $a0–$a3 nein Erste vier Argumente eines Unterprogramms
$8–$15 $t0–$t7 nein Temporäre Werte, Sichern durch Aufrufer
$16–$23 $s0–$s7 ja Temporäre Werte, Sichern durch Aufgerufenen
$24–$25 $t8–$t9 nein Temporäre Werte, Sichern durch Aufrufer
$26–$27 $k0–$k1 — Reserviert für das Betriebssystem
$28 $gp ja global pointer. Zeigt in die Mitte des ersten 64K Blockes im Datensegment
$29 $sp ja stack pointer. Kellerpegel
$30 $fp ja frame pointer. Schachtelzeiger
$31 $ra nein return address. Rücksprungadresse
A.3 Befehle
Art Opcode Operanden Bedeutung Kommentar
Arithmetik
addu $d $s t $d ← $s + $t
addiu $t $s i $t ← $s + sext32 16(i)
subu $d $s t $d ← $s − $t
Bitoperationen
and $d $s $t $d ← $s & $t
andi $d $s i $t ← $s & zext32 16(i)
or $d $s $t $d ← $s | $t
ori $d $s i $t ← $s | zext32 16(i)
xor $d $s $t $d ← $s ̂ $t
xori $d $s i $t ← $s ̂ zext32 16(i)
nor $d $s $t $d ← $s | $t
Shifts
sll $d $s n $d ← $s[31 − n ∶ 0] ⋅ 0n
srl $d $s n $d ← 0n ⋅ $s[31 ∶ n]
sra $d $s n $d ← ($s31)n ⋅ $s[31 ∶ n]
sllv $d $s $t $d ← s31−n … s0 ⋅ 0n
srlv $d $s $t $d ← 0t ⋅ s31 … st
srav $d $s $t $d ← st 31 ⋅ s31 … st
Vergleiche
slt $d $s $t $d ← if $s s< $t then 1 else 0
sltu $d $s $t $d ← if $s u<$t then 1 else 0
slti $d $s i $d ← if $s s<sext32 16(i) then 1 else 0
sltiu $d $s i $d ← if $s u< sext32 16(i) then 1 else 0
lui $d i $t ← i15 … i0 ⋅ 016
Laden
lw $d i($s) $d ← M[$s + sext32
16(i)] ($s + sext32
16(i)) & 3 = 0
lh $d i($s) $d ← sext32
16(M[$s + sext32
16(i)]) ($s + sext32
16(i)) & 1 = 0
lb $d i($s) $d ← sext32 8 (M[$s + sext32 16(i)])
lhu $d i($s) $d ← zext32 16(M[$s + sext32 16(i)]) ($s + sext32 16(i)) & 1 = 0
lbu $d i($s) $d ← zext32 8 (M[$s + sext32 16(i)])
Speichern
sw $d i($s) M[$s + sext32 16(i)] ← $d ($s + sext32 16(i)) & 3 = 0
sh $d i($s) M[$s + sext32 16(i)] ← $d[15 ∶ 0] ($s + sext32 16(i)) & 1 = 0
b $d i($s) M[$s + sext32 16(i)] ← $d[7 ∶ 0]
Sprung
beq $s $t offset pc ← pc + 4 + if $s = $t then sext32 16(offset) else 0
bne $s $t offset pc ← pc + 4 + if $s ≠ $t then sext32 16(offset) else 0
blez $t offset pc ← pc + 4 + if $t ≤ 0 then sext32 16(offset) else 0
bgtz $t offset pc ← pc + 4 + if $t > 0 then sext32 16(offset) else 0
bltz $t offset pc ← pc + 4 + if $t < 0 then sext32 16(offset) else 0
bgez $t offset pc ← pc + 4 + if $t ≥ 0 then sext32 16(offset) else 0
jal addr $31 ← pc + 8, pc ← addr
jr $s pc ← $s
syscall Rufe Betriebssystem
Pseudo
li $d i $d ← i
la $d l $d ← addr Lädt Adresse der Marke l
mul $d $s t $d ← $s × $t
div $d $s t $d ← $s/$t
not $d $s $d ← $s
neg $d $s $d ← −$s
b{lt, gt, le, ge} $d, $d, offset pc ← pc + 4 + if $s cmp $t then offset else 0
Это расшифровка...
 

Sprung zu