MIPS汇编代码注释详解 - 指令解析及内存操作
// 定义并初始化内存 mem mem[0]<= 32'b000000_00001_00010_10000_00000_100000; // add $16,$1,$2 16号寄存器值为 3 mem[1]<= 32'b000000_10000_01001_10001_00000_100010; // sub $17,$16,$9 17号寄存器值为 -6 mem[2]<= 32'b000000_10000_00001_10010_00000_100000; // add $18,$16,$1 18号寄存器值为 4 mem[3]<= 32'b000100_00000_00000_00000_00000_000011; // beq 分支跳转指令, 跳转到7 //mem[4] <= 32'b000000_00001_00010_10000_00000_100000; // add $16,$1,$2 16号寄存器值为 3 //mem[5] <= 32'b000000_00010_01000_10001_00000_100010; // sub $17,$2,$8 17号寄存器值为 -6 mem[4]<= 32'b000000_00101_00010_10010_00000_100100; // and $18,$5,$2 18号寄存器值为 0 mem[5]<= 32'b001001_00110_10011_00000_00000_000110; // addiu $19,$6,6 19号寄存器值为 12 mem[6]<= 32'b001101_00111_01011_00000_00000_000010; // ori $11,$7,2 7号寄存器值与2相或,结果为3 送11号寄存器 mem[7]<= 32'b100011_00001_00101_00000_00000_000111; // lw $5,$1,7 20号寄存器值为 存储器 8 mem[8]<= 32'b101011_00001_01010_00000_00000_001111; // sw $10,$1,15 将10号寄存器的值存到 存储器 16中 mem[9]<= 32'b000010_00000_00000_00000_00000_000010; // jump 无条件跳转指令,跳转到2 // 代码解释: // mem[0] 执行指令 add $16,$1,$2,将 $1 和 $2 寄存器的值相加,结果存入 $16 寄存器,$16 的值为 3 // mem[1] 执行指令 sub $17,$16,$9,将 $16 和 $9 寄存器的值相减,结果存入 $17 寄存器,$17 的值为 -6 // mem[2] 执行指令 add $18,$16,$1,将 $16 和 $1 寄存器的值相加,结果存入 $18 寄存器,$18 的值为 4 // mem[3] 执行指令 beq,分支跳转指令,如果 $0 和 $0 寄存器相等,则跳转到第 7 条指令 // mem[4] 执行指令 and $18,$5,$2,将 $5 和 $2 寄存器的值进行按位与操作,结果存入 $18 寄存器,$18 的值为 0 // mem[5] 执行指令 addiu $19,$6,6,将 $6 寄存器的值加上立即数 6,结果存入 $19 寄存器,$19 的值为 12 // mem[6] 执行指令 ori $11,$7,2,将 $7 寄存器的值与立即数 2 进行按位或操作,结果存入 $11 寄存器,$11 的值为 3 // mem[7] 执行指令 lw $5,$1,7,将存储器中地址为 7 的内容存入 $5 寄存器,存储器地址从 $1 寄存器中取得,$5 的值为 存储器地址 8 中的内容 // mem[8] 执行指令 sw $10,$1,15,将 $10 寄存器的值存入存储器地址为 15 的位置,存储器地址从 $1 寄存器中取得 // mem[9] 执行指令 jump,无条件跳转指令,跳转到第 2 条指令
原文地址: https://www.cveoy.top/t/topic/obax 著作权归作者所有。请勿转载和采集!