我正在尝试使用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);
答案 0 :(得分:1)
首先或(|
)将其分成一个数字。例如,这肯定是错误的。只是为了得到这个想法。
int hex = (opcode<<24)|(rs<<16)|(rt<<8)|(imm);
然后:
printf("0x%X:\t0%X",list[i].a, hex);