使用函数的 C 汇编器
大家好, 我正在尝试根据一些指令集用 C 语言设计一个汇编程序。 我想读取包含指令的汇编语言文件。在十六进制文件中,有十六进制数据、整数数据和负整数数据。我需要将该数据转换为 8 位十六进制数据,其中 6 位表示十六进制数据,其余 2 位是操作码。 例如 ; LDC 0x1000 输出:00100000(ldc的操作码是00) 最不发达国家-3; 输出:fffffd00(+3 的 6 位 2 补码)。
我正在尝试 ltoa 将整数转换为十六进制,但它给出字符串作为输出,所以我无法附加 0s 。 请紧急提出建议
HI all,
I am trying to design an assembler in C based on some instruction sets.
I want to read a assembly language file containing instructions. IN the hex file there is hex data, integer data and negative integer data. I need to convert that data into 8 bit hexadecimal data , out of which 6 bit represents hexadecimal data and the remaining 2 bit will be of opcode.
For example ;
ldc 0x1000
output: 00100000 (opcode of ldc is 00)
ldc -3;
output : fffffd00 (6 bit 2s complement of +3).
I am trying ltoa to convert the integer into hexadecimal, but its giving string as output so i am not able to append 0s .
PLease suggest urgentl
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您似乎将位与半字节混淆了。一个十六进制数字代表 4 位。操作码可以存储 24 位常数,6 个半字节。使用 strtol() 从字符串中读取值并将其左移 8。或者使用操作码。
You seem to confuse bits with nibbles. One hexadecimal digit represents 4 bits. The opcode can store a 24 bit constant, 6 nibbles. Read the value from the string with strtol() and left-shift it by 8. Or with the opcode.