LC-3 to C conversion
LC-3 to C conversion
我想得到输出:
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;
}
但我在type和stncmp中遇到了各种各样的错误。错误:警告:从"long"到"int"的隐式转换将值从68738383881更改为18907145[-Wconstant conversion]
和
警告:函数"stncmp"的隐式声明在C99中无效[-Wimplicit函数声明]如果(stncmp(加法,二进制,4)==1)
有人能帮忙吗?
以下是lc3指令集的副本供参考http://ece224web.groups.et.byu.net/reference/LC3_Instructions.gif
不能用二进制值初始化变量。以0
开头表示该值为octal
。以0x
开头表示该值为hexademical
所以你的初始化可以这样做:
int testBinary = 0x11A3;
至于stncmp
,你不能用它来比较char*
和int
。我想你可以为你的案例初始化testbinary
:
char testbinary[17] = "0001000110100011";
然后可以将其与and
进行比较。
相关文章:
- 如何解决"invalid conversion from 'char' to 'const char*'"
- 使用 cmake 的 Linux 终端上的"Conversion to non-scalar type is requested"错误
- "No suitable conversion function from 'std::string' to 'const char *' exists"
- 为什么我会收到"invalid conversion from 'Queue*/Stack*' to 'int'"错误消息?
- Libav AVFrame to Opencv Mat to AVPacket conversion
- cpp rgb to yuv422 conversion
- Python bool conversion to C++ (pybind11)
- conversion to int16_t c++
- 使用strupr和strlwr时如何解决错误"invalid conversion of char to char*"?
- "conversion from void to non scalar type string"是什么意思?
- 我收到一个" conversion from ‘std::string (*)[50]’ to non-scalar type ‘std::string’ requested"错误,似乎无法修复它
- Typo:bool to int conversion诱导的std :: ifstream在Linux下的错误
- 消除"conversion to std::vector<int>::size_type to int"警告
- CString to std::string or sql::SQLString conversion - C++
- 调用 qExec "no known conversion for argument 1 to QObject"时出错
- Opencv Mat conversion to QByteArray
- QVariant conversion to QPainterPath
- 将字符串传递给函数时出现"conversion to const char*"错误
- c c++ conversion to C#
- matlab mod conversion to c++