什麼決定了程序計數器的大小?彙編語言:程序計數器大小
所以,這是我知道的:
存儲器地址寄存器(MAR)的大小是LOG 2(存儲空間)。
PC大小是否與每個存儲器地址的尋址能力相同或與MAR相同?
例如,如果存儲器空間爲16M,每個存儲器空間爲16位可尋址,則MAR大小爲24位可尋址指定存儲器地址位置。
是PC大小24位—是否與MAR —相同或32位—每個空間的尋址能力?
什麼決定了程序計數器的大小?彙編語言:程序計數器大小
所以,這是我知道的:
存儲器地址寄存器(MAR)的大小是LOG 2(存儲空間)。
PC大小是否與每個存儲器地址的尋址能力相同或與MAR相同?
例如,如果存儲器空間爲16M,每個存儲器空間爲16位可尋址,則MAR大小爲24位可尋址指定存儲器地址位置。
是PC大小24位—是否與MAR —相同或32位—每個空間的尋址能力?
這完全取決於硬件設計師的心血來潮。
我不知道MAR是什麼,但是通常你的寄存器足夠大,可以處理所有的程序存儲器。通常情況。
原來的i80x86 CPU的指令指針有效地分成2個部分,一個段選擇器和偏移量。訪問物理內存時進入地址總線的實際地址由這兩部分組成。在所謂的實際尋址模式中,地址簡單地爲segment selector * 16 + offset
。這兩塊是16位的,這種尋址方案可以讓你訪問大約1MB的內存。如果你只改變了指令指針而不改變段,你將被限制爲64KB。還有其他帶有拆分指令指針的處理器。例如,德州儀器的TMS320C54xx。
回到x86 ...在64位x86 CPU上,您的指令指針長度爲64位。但是,CPU可能不會(並且我認爲仍然不能)支持完整的64位內存地址,只使用最低的52位。這是一個指令指針大於訪問所有內存所需的例子。