For Loop

Kategori: MIPS , 15 Ekim 2019 , JanFranco


For döngüsü için özel bir instruction tabi ki yoktur. Kendi imkanlarımız oluşturacağız. Aşağıdaki for döngüsünü MIPS'te yazalım:


int i, sum = 0;
for(i=0; i<10; i++){
    sum += i;
}
İlk olarak i ve sum değerlerini oluşturalım:


li $t0, 0	#	i variable
li $s0, 0	#	sum variable
li $t1, 10	#	for i < 10
Üçüncü registera 10 değerini atadık. Çünkü t0 değeri ile t1 değerini karşılaştıracağız ve t0 değeri 10 olduğunda döngü sonlanacak. beq instruction kullanacağız ve immidiate değer giremeyiz. Bu sebeple 10 değerini bir registera attık. Döngüyü açalım:


loop:

	beq $t0, $t1, EXIT
			
		add $s0, $s0, $t0
		
	addi $t0, $t0, 1
	j loop
beq instruction ile if t0 == t1, go to EXIT işlemini gerçekleştirdik. Döngünün içinde s0 = s0 + i yani s0 += i işlemini gerçekleştirdik. Daha sonra i değerini bir artırdık ve jump instruction ile döngünün başına geri döndük. t0, t1 değerine eşit olduğunda EXIT bloğuna gideceğiz. Onu da tanımlayalım:


EXIT:
		
	li $v0, 1
	move $a0, $s0
	syscall
	
	li $v0, 10
	syscall
Burada s0 registerındaki değeri, a0 registerına attık ve ekrana bastık. Daha sonra programı sonlandırdık. Karşımıza 45 sonucu geldi. Programın tam hali:


	.text

main:

	li $t0, 0	#	i variable
	li $s0, 0	#	sum variable
	li $t1, 10	#	for i < 10

	loop:

		beq $t0, $t1, EXIT
			
			add $s0, $s0, $t0
		
		addi $t0, $t0, 1
		j loop
		
	EXIT:
		
		li $v0, 1
		move $a0, $s0
		syscall
	
		li $v0, 10
		syscall


Sonraki Yazı: While Loop
Yorumlar

Henüz bir yorum bulunmuyor.
Yorum bırakın