Hur skriver man det här i mips assembly?
Jag har koden
#A[k][j] / A[k][k] där basadressen för A finns i $a0 , k i $t0 och j i $t1.
Kan någon ge mig ett tips om hur det här kan skrivas i Mips eller något språk?
Jag förstår inte detta: #A[k][j] / A[k][k]. Vad menas med det?
Har MIPS ens division?
Snushunk skrev:Jag förstår inte detta: #A[k][j] / A[k][k]. Vad menas med det?
A är en matris
elementet på position kj ska få värdet av kvoten mellan elementet på position kj och kk
Laguna skrev:Har MIPS ens division?
Ja https://www.dsi.unive.it/~gasparetto/materials/MIPS_Instruction_Set.pdf
Där ser man. Det verkar ha införts i MIPS III.
Varför ska du använda just MIPS? Har du gjort nåt med MIPS förut?
Det är första gången, men det är för en uppgift i en kurs :(
Har du skrivit assembler för nån annan processor?
Hur lyder uppgiften?
Det här är hela uppgiften:
jag har skrivit det här för de två ovan looperna
move $t0, $a0 # r-pointer(t0) = address of matrix
addi $t3, $a0, 60 # t3 = final matrix elem (4x4 * 4)
lwc1 $f15, one # f15 = 1.0
lwc1 $f16, zero # f16 = 0.0
L1:
addi $t1, $t0, 4 # c-pointer(t1) = address of matrix + 4
addi $t6, $t0, 4 # c1-pointer(t6)= address of matrix + 4
addi $t2, $t0, 12 # t2 = last element of row
lwc1 $f0, 0($t0) # f0 = A[k][k]
L2:
lwc1 $f1, 0($t1) # f1 = A[k][j]
div.s $f2, $f1, $f0 # f2 = A[k][j] / A[k}[k]
swc1 $f2, 0($t1) # f2 -> A[k][j]
beq $t1, $t3, out # branch to out if last elem of matrix, STUPID
nop
bne $t1, $t2, L2 # branch to L2 if we're in last column
addi $t1, $t1, 4 # increase c-pointer # Increase r-pointer to next row
swc1 $f15, 0($t0) # 1.00 -> A[k][k]
# PIVOT LOOP
L3:
L4:
jal L1 # otherwise jump to L1
addi $t0, $t0, 16 # Increase c-pointer to next column
men jag vet inte hur jag ska börja initiera för de två nedersta looperna, kan jag få ett tips?