Assembly 将程序集转换为机器代码
我正在修一门关于计算机组织和体系结构的课程。 我们有一些练习要做。其中之一是将汇编代码转换为机器指令 我一直在把Assembly 将程序集转换为机器代码,assembly,machine-code,intel-fpga,nios,Assembly,Machine Code,Intel Fpga,Nios,我正在修一门关于计算机组织和体系结构的课程。 我们有一些练习要做。其中之一是将汇编代码转换为机器指令 我一直在把movia转换成机器指令 我知道它由两个操作组成,orhi和addi 这是程序集中的代码: movia r8, 50000 练习说明r0是0x0,r8是0x8 因此,orhi应该是:orhi r8,r0,%hiadj(50000)而add应该是:addi r8,r8,%lo(50000) 我已将orhi发送至: 00000 01000 1100001101010000 11
movia
转换成机器指令
我知道它由两个操作组成,orhi
和addi
这是程序集中的代码:
movia r8, 50000
练习说明r0
是0x0
,r8
是0x8
因此,orhi
应该是:orhi r8,r0,%hiadj(50000)
而add应该是:addi r8,r8,%lo(50000)
我已将orhi
发送至:
00000 01000 1100001101010000 110100
___________________r0____r8_______50000________0x34(opcode)
但是我必须在50000上使用%hiadj
!我不知道该怎么做?我到处找了一下,但还没有找到足够清楚的答案
我对这个很陌生,但我真的很想理解!那么,您如何使用
%hiadj
?如果问题不清楚,很抱歉,但如果您愿意帮忙,我将尝试进一步解释。%hiadj
是其操作数的16个最高有效位,如果16个最低有效位将由movia
进行符号扩展,则会进行调整。在50000
的情况下,16个最高有效位为0
,并且没有符号扩展
所以%hiadj(50000)
就是0