代码拉取完成,页面将自动刷新
字段 | OP | rs | rt | rd | shamt | func | 功能描述 |
---|---|---|---|---|---|---|---|
位数 | 6 | 5 | 5 | 5 | 5 | 6 | |
汇编助记符 | 编码 | ||||||
add rd,rs,rt | 000_000 | rs | rt | rd | 00000 | 100_000 | rs + rt -> rd |
sub rd,rs,rt | 000_000 | rs | rt | rd | 00000 | 100_010 | rs - rt -> rd |
and rd,rs,rt | 000_000 | rs | rt | rd | 00000 | 100_100 | rs & rt -> rd |
or rd,rs,rt | 000_000 | 00000 | 100_101 | rs | rt -> rd | |||
xor rd,rs,rt | 000_000 | 00000 | 100_110 | rs ^ rt -> td | |||
nor rd,rs,rt | 000_000 | 00000 | 100_111 | ~ (rs | rt) -> rd | |||
sltu rd,rs,rt | 000_000 | 00000 | 101_011 | (rs < rt) ?1 :0 | |||
sllv rd,rt,rs | 000_000 | 00000 | 000_100 | rt << rs -> rd | |||
jr rs | 000_000 | rs | 00000 | 00000 | 00000 | 001_000 | rs -> PC |
字段 | OP | rs | rt | imm | 功能描述 |
---|---|---|---|---|---|
位数 | 6 | 5 | 5 | 16 | |
汇编助记符 | 编码 | ||||
addi rt,rs,imm | 001_000 | rs | rt | imm | rs + imm -> rt |
andi rt,rs,imm | 001_100 | rs & imm -> rt | |||
xori rt,rs,imm | 001_110 | rs ^ imm -> rt | |||
sltiu rt,rs,imm | 001_011 | (rs < imm) ?1 :0 | |||
beq rs,rt,label | 000_100 | rs | rt | offset | (rs == rt) ?PC + 4 + offset * 4 -> PC |
bne rs,rt,label | 000_101 | rs | rt | offset | (rs != rt) ?PC + 4 + offset * 4 -> PC |
lw rt,offset(rs) | 100_011 | rs | rt | offset | (rs + offset) -> rt |
sw rt,offset | 101_011 | rs | rt | offset | rt -> (rs + offset) |
字段 | OP | address | 功能描述 |
---|---|---|---|
位数 | 6 | 26 | |
汇编助记符 | 编码 | ||
j label | 000_010 | address | {(PC + 4)[31 -: 4], address, 2'b00} -> PC |
jal label | 000_011 | address | (PC + 4) -> $31(单周期实现)/ (PC + 8) -> $31(流水线实现), {(PC + 4)[31 -: 4], address, 2'b00} -> PC |
安装好工具链(mips-2013.05-65-mips-sde-elf),使用如下脚本生成mif文件
https://github.com/Ellen7ions/bin2mem
Q:为什么和书里给的机器码有点不一样?
A:MIPS标准指令系统考虑到流水线延迟,引入分支延迟槽,就是位于分支指令后面的一条指令,不管分支发生与否其总是被执行。所以本实验用编译器生成的机器码,每条跳转指令后都有一条空指令(00000000)。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。