gpt4 book ai didi

c - 如何从内存中读取16位值

转载 作者:行者123 更新时间:2023-11-30 14:47:44 25 4
gpt4 key购买 nike

我的内存中有一个 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 arch 上运行,二进制文件适用于旧的 8 位控制台。

最佳答案

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

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

如果内存启动一个对齐良好的地址,并且如果偏移量是2的倍数,那么您可以在一次读取:

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

关于c - 如何从内存中读取16位值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50972120/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com