用C语言将汇编指令转换为十六进制

用C语言将汇编指令转换为十六进制,c,mips,C,Mips,我试图用C语言制作一个初级汇编程序。我把它很好地读入了指令,但我正在努力把指令正确地转换成十六进制。如何将多个十进制值合并成32位二进制数转换为十六进制 下面是我现在对指令addi$t0,$t1,10的内容: opcode = opcode >> 2; rs = rs >> 1; rt = rt >>1; imm = imm >> 15; printf("0x%X:\t0x%X%X%X%X",list[i].a,opcode,rs,rt,imm);

我试图用C语言制作一个初级汇编程序。我把它很好地读入了指令,但我正在努力把指令正确地转换成十六进制。如何将多个十进制值合并成32位二进制数转换为十六进制

下面是我现在对指令
addi$t0,$t1,10的内容:

opcode = opcode >> 2;
rs = rs >> 1;
rt = rt >>1;
imm = imm >> 15;
printf("0x%X:\t0x%X%X%X%X",list[i].a,opcode,rs,rt,imm);
第一个或(
|
)将其转换为一个数字。例如,这肯定是错误的。只是为了得到这个想法

int hex = (opcode<<24)|(rs<<16)|(rt<<8)|(imm);

用于展示?是的。它会将十六进制指令格式打印成标准输出。这就是我的想法。然而,addi的操作码是8,但整个二进制表示中的操作码字段是6位。在这种情况下,我如何在保留两个前导零的同时进行移位?@CameronFuruseth:value
8
可以容纳6位,有足够的空间。移位位值不需要“保留”零位。如果这个答案不适用于该说明,最好将其添加到您的问题中。
printf("0x%X:\t0%X",list[i].a, hex);