如何从内存中读取 16 位值

How to read a 16 bit value from memory

我在内存中有一个 4096K 的二进制文件,采用小端格式。我想读取几个 8 位值作为 uint16_t 我该如何以最高效的方式进行读取?

void execute_cart (i6507_t* cpu, uint8_t* memory) {
    // uint16_t start = memory[0xFFFC]; // this address contains a 16 bit value
}

更新:我在 x86-64 架构上 运行,二进制文件适用于旧的 8 位控制台。

您需要分别读取两个字节并将它们组合成一个 uint16_t 变量:

unsigned offset = 0xfffc;
uint16_t start = memory[offset];
start |= (uint16_t)memory[offset+1] << 8;

如果 memory开始一个对齐良好的地址并且如果偏移量是2的倍数,那么你可以在一次阅读中做到这一点:

uint16_t start = *(uint16_t *)&memory[0xfffc];