我無法將存盤的地址拆分為其組件(即拆分為標記位、設定索引位和塊偏移位)。我正在嘗試實作該功能...
無符號字符檢查快取(行快取[4],無符號??字符地址);
此函式將檢查給定的快取是否將資料存盤在給定的記憶體地址。如果快取將資料存盤在給定的記憶體地址(即快取命中),該函式將回傳存盤的資料。否則(即快取未命中),該函式將回傳 0xFF。這是一些C代碼......
typedef struct {
char valid;
char tag;
char block[4];
} line;
unsigned char check_cache(line cache[4], unsigned char addr);
- 快取是定向映射 (E=1),具有 4 位元組塊大小 (B=4) 和四組 (S=4)。
我需要將給定的記憶體地址存盤在一個位元組大小的暫存器中,然后將該地址分成三個部分(標記位、設定索引位和塊偏移位)。此外,“您可能需要使用位元級別的操作,如和b和SHRB和1個位元組的移動指令MOVB分裂的地址。”
到目前為止,這是我的 IA32 匯編代碼
.global check_cache
check_cache:
pushl
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/365363.html
