簡體   English   中英

如何從內存中讀取16位值

[英]How to read a 16 bit value from memory

我的內存中有一個4096K二進制文件,格式為little-endian。 我想以uint16_t讀取幾個8位值,我該如何以最高性能的方式進行讀取?

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];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM