1
所以,我有我像02324020这是从MIPS指令的机器代码以数字的txt文件:add $t0, $s1, $s2
我如何掩盖我不想从我的机器码中得到的位?
当它在二进制和切成6,5,5,5,5节,6所采取的数字是:0,17,18,8,0,20
这给出了指令的概念:R [rd] = R [rs] + R [rt]和26- 31是操作码0意味着R格式,rd = 8,rs = 17,rt = 18
我试图掩盖位,所以我只看到21-25之间的位,然后收到它们的数字: 0,17,18,8,0,20因为向右移动:printf("\n%x\n", code >>26);
给我t他操作码0并告诉我它的R格式。
所以现在我试图找到17,但我不知道该怎么放置后& 0b
在:
printf("\n%x\n", code >>21 & 0b____);
我真的可以用一个例子来从我的电话号码02324020
找到剩余的号码这是我到目前为止的代码:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char* argv[])
{
unsigned int code = 0;
FILE *fp;
fp = fopen(argv[1], "r+");
int result = fscanf(fp, "%x", &code);
printf("\n hex-1: %08X, decimal-1: %d \n", code, code);
printf("\n%x\n", code >>26);
printf("\n%x\n", code >>21 & 0x0b00000011111); //what can i do to change this
while (result != EOF)
{
result = fscanf(fp, "%x", &code);
printf("\n read hex: %08X, decimal: %d \n", code, code);
if(feof(fp))
{
puts("EOF");
break;
}//if
}//while
}
做'代码>> 21 0b11111'应该给你你正在寻找的17。这不行吗? – frslm
!!!这确实有效,但为什么ob11111?当我试图获得下一个18时,它会如何改变? – KunaiBunsen
编辑:等我试了与其他部分,他们的工作哦,我的上帝,这是如此简单,我不能相信它,谢谢! – KunaiBunsen