出力を取得したい:
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