Na5a 388
Postad: 11 maj 2022 16:16

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?

Snushunk 152
Postad: 11 maj 2022 16:51

Jag förstår inte detta: #A[k][j] / A[k][k]. Vad menas med det?

Laguna 28468
Postad: 11 maj 2022 16:52

Har MIPS ens division?

Na5a 388
Postad: 11 maj 2022 17:10
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

Na5a 388
Postad: 11 maj 2022 17:11
Laguna skrev:

Har MIPS ens division?

Ja https://www.dsi.unive.it/~gasparetto/materials/MIPS_Instruction_Set.pdf

Laguna 28468
Postad: 11 maj 2022 17:23

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?

Na5a 388
Postad: 11 maj 2022 19:43

Det är första gången, men det är för en uppgift i en kurs :(

Laguna 28468
Postad: 11 maj 2022 19:45

Har du skrivit assembler för nån annan processor?

Hur lyder uppgiften?

Na5a 388
Postad: 12 maj 2022 10:58

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?

Svara Avbryt
Close