假如某個存盤器按位元組編址,那么cpu可以按位元組,半字以及字去訪問這個存盤器。
基于以上假設有以下幾個疑問:
1.邊界不對齊時是否可以按字尋址對某個字進行存取?
2.cpu給出地址后,存盤器怎么確定此次訪存取出的是位元組還是半字或字?
3.如果按字尋址的話,那么是一個存取周期內取出一個字,還是通過多個位元組地址分別取出然后構成一個字?
4.不同尋址方式下,MDR的位數會不一樣嗎?MDR位數是否只是由編址方式決定?
這幾個問題困擾我好久了,希望有朋友能指點一二,謝謝!
uj5u.com熱心網友回復:
應該是按字的邊界讀取一個字,然后根據指令是讀位元組還是讀字 舍去無關的位元組uj5u.com熱心網友回復:
1:這個完全不用考慮或擔心。2:讀指定地址資料,每一次讀多長,是按地址定義時的資料型別決定的,如char c讀1位元組,int就讀4位元組
3:多少資料也好,每次只讀1位元組。
如 int a=*(char *)40000001;這樣只讀1個位元組放在a內,每次讀多少是按地址定義時的資料型別。
又如 int a=*(int*)40000001;就連讀4個位元組放在a內,因為a是4位元組的
4:不了解
uj5u.com熱心網友回復:
人比人比死人!現在的前人也能把疑問整理得這么清晰! 想我當時學了很多年,連這些疑問也問不出來,一直糊糊涂涂的! 很多公司中,三十來歲,四十歲的程式員就被當老人勸退,是有道理的。uj5u.com熱心網友回復:
感謝您的回復,不過我想知道的是從計算機組成原理的角度或者說是cpu對存盤器在某個編址及尋址方式下的角度去理解這幾個疑問(畢竟要應付考試
)
uj5u.com熱心網友回復:
感謝您的回復轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/100124.html
標籤:硬件設計
上一篇:arduino 兩輪自行車
