MIPSのまとめ 小テスト問題 小テスト問題: MIPSのまとめ 以下に示すC言語プログラムをMIPSアセンブリ言語に変換せ よ.また,機械語に変換せよ.ただし, 配列Aは100語(1語は32ビット)からなり,その開始アドレス(ベースアドレ ス)はレジスタ$s2に格納されているとする 各変数のレジスタ割当は下表とする バイトアドレスのビッグ・エンディアン方式を前提とする レジスタ$t0~$t7やゼロレジスタ($zero)は自由に使用して良い プログラムの開始アドレスは0x00000000(16進表現)とする f = 0; for (i=0; i<10; i++) { if (i >= 5) f = f + i + 1; else f = f + A[i]; f = f * 2; } 変数名 レジスタ f $s0 i $s1 A[ ] $s2 定数10 $t1 定数5 $t2 九州大学工学部電気情報工学科 小テスト問題: MIPSのまとめ add add FOR: slt beq slt bne add addi j ELSE: add add add lw add EXIT_IF: add addi j EXIT_FOR: f = 0; $s0, $zero, $zero # fを0に初期化 for (i=0; i<10; i++) { $s1, $zero, $zero # iを0に初期化 if (i >= 5) $t3, $s1, $t1 # i<10なら$t3←1 $t3, $zero, EXIT_FOR # i>=10ならFORを終了 f = f + i + 1; $t3, $s1, $t2 # i<5なら$t3←1 else $t3, $zero, ELSE # i<5ならELSEへ分岐 f = f + A[i]; $s0, $s0, $s1 #f=f+i f = f * 2; $s0, $s0, 1 # fに10進数1を加算 } EXIT_IF # EXIT_IFへ分岐 変数名 レジ $t4, $s1, $s1 # 変数i($s1)×2 スタ $t4, $t4, $t4 # 変数i($s1)×4 $t4, $t4, $s2 # A[i]のアドレスを計算 f $s0 $t5, 0($t4) # A[i]を$t5にロード i $s1 $s0, $s0, $t5 # f = f + A[i] $s0, $s0, $s0 #f=f*2 A[ ] $s2 $s1, $s1, 1 # 変数i($s1)+1 定数10 $t1 FOR # for文の先頭へジャンプ 定数5 $t2 九州大学工学部電気情報工学科 小テスト問題: MIPSのまとめ FOR: ELSE: EXIT_IF: add add slt beq slt bne add addi j add add add lw add add addi $s0, $zero, $zero $s1, $zero, $zero $t3, $s1, $t1 $t3, $zero, EXIT_FOR $t3, $s1, $t2 $t3, $zero, ELSE $s0, $s0, $s1 $s0, $s0, 1 EXIT_IF $t4, $s1, $s1 $t4, $t4, $t4 $t4, $t4, $s2 $t5, 0($t4) $s0, $s0, $t5 $s0, $s0, $s0 $s1, $s1, 1 # # # # # # # # # # # # # # # # 000000_00000_00000_10000_00000_100000 000000_00000_00000_10001_00000_100000 000000_10001_01001_01011_00000_101010 000100_01011_00000_0000000000001101 000000_10001_01010_01011_00000_101010 000101_01011_00000_0000000000000011 000000_10000_10001_10000_00000_100000 001000_10000_10000_0000000000000001 000010_00000000000000000000001110 000000_10000_10000_01100_00000_100000 000000_01100_01100_01100_00000_100000 000000_01100_10010_01100_00000_100000 100011_01100_01101_0000000000000000 000000_10000_01101_10000_00000_100000 000000_10000_10000_10000_00000_100000 001000_10001_10001_0000000000000001 j FOR # 000010_00000000000000000000000010 EXIT_FOR: 九州大学工学部電気情報工学科 Created by Koji Inoue, 2005 (R1.00) 九州大学工学部電気情報工学科
© Copyright 2024 ExpyDoc