目前,我正在研究一个简单的c虚拟机的启动,它将一个二进制文件读入一个 "内存 "数组,然后将获取解码和评估所给的指令。目前,我被困在如何正确地将这个二进制文件读入内存中,以便以后用于解码和基于2或4字节的分离。我的输入与我的输出不匹配,我把它放在下面,我不确定这是否是一个endian问题或我没有正确地把文件读入内存。
MAIN.c
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define MAXMEM 1024
unsigned memory[MAXMEM];
int loads(char *filename)
{
File *file = fopen(filename, "rb");
return fread(memory, sizeof *memory, MAXMEM, file);
}
int main(int argc, char **argv){
if(argc <= 1){
printf("No file Found\n");
return -1;
}
char *filename = argv[1];
loads(filename);
printf("%04x\n", *memory);
}
INPUT.BIN(从运行od -x --endian=big input.bin | head -5
得到的数据)
00000000 b10a b200 1123
目前的输出
b20ab1
希望的输出
either b10a b200 1123
or b1 0a b2 00 11 23