我想得到输出:
add reg1,reg2,reg3
我的代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void instruction(int binary);
int binaryToDecimal(int n);
int main()
{
int testBinary = 0001000110100011;
instruction(testBinary);
}
void instruction(long binary)
{
char add[4] = "0001";
char and[4] = "0101";
int binaryRep;
if(stncmp(add, binary, 4) == 1)
{
int reg1;
int reg2;
int reg3;
int temp3;
binary = binary << 4 ;
binary = binary << 3 ;
memcpy(reg1, binary, 3);
binary = binary << 3 ;
memcpy(reg2, binary, 3);
binary = binary <<6;
memcpy(reg3, binary, 3);
reg1 = binaryToDecimal(reg1);
reg2 = binaryToDecimal(reg2);
reg3 = binaryToDecimal(reg3);
printf("add r%d, r%d, r%d", reg1,reg2,reg3);
}
if(stncmp(and, binary, 4) == 1)
{
int reg1;
int reg2;
int reg3;
int temp3;
binary = binary << 4 ;
binary = binary << 3 ;
memcpy(reg1, binary, 3);
binary = binary << 3 ;
memcpy(reg2, binary, 3);
binary = binary <<6;
memcpy(reg3, binary, 3);
reg1 = binaryToDecimal(reg1);
reg2 = binaryToDecimal(reg2);
reg3 = binaryToDecimal(reg3);
printf("and r%d, r%d, r%d", reg1,reg2,reg3);
}
}
int binaryToDecimal(int n) /* Function to convert binary to decimal.*/
{
int decimal=0, i=0, rem;
while (n!=0)
{
rem = n%10;
n/=10;
decimal += rem*pow(2,i);
++i;
}
return decimal;
}
但是我遇到了类型和 stncmp 的各种错误。错误:警告:从“long”到“int”的隐式转换将值从 68738383881 更改为 18907145 [-Wconstant-conversion]
和
警告:函数 'stncmp' 的隐式声明在 C99 [-Wimplicit-function-declaration] if(stncmp(add, binary, 4) == 1) 中无效
有人可以帮忙吗?
这是 lc3 指令集的副本供参考http://ece224web.groups.et.byu.net/reference/LC3_Instructions.gif