簡體   English   中英

程序計數器如何知道下一條指令在內存中的位置?

[英]How does the program counter know where the next instruction is in memory?

一直有人告訴我,它遞增4以獲取下一條指令(當沒有跳轉或類似情況時),但這是否意味着指令僅限於具有3個參數?

我認為程序在內存中看起來像這樣嗎?

0: LOAD
1: eax
2: 0x30
3: <zeroed out because the next instruction has to be at 4>
4: LOAD
5: ebx
6: 0x34
7: <zeroed out because the next instruction has to be at 8>
8: ADD
9: ecx
10: eax
11: ebx
12: <Next instruction>

等等。

這可能不是完全有效的程序集,但是您可以理解我的意思(我也知道它將是二進制形式)。 如果程序沒有像這樣加載到內存中,那么程序計數器如何知道下一條指令在哪里?

您問題的答案取決於系統。 通常有兩個答案:

首先,在大多數RISC系統中,簡化的事情之一是所有包含操作數的指令都占用一個靜態大小。 這使得將程序計數器或指令指針增加靜態量非常簡單。 這聽起來像是您在問題中所指的內容。

在不使用靜態大小的CISC系統和RISC系統中,指令解碼器所做的部分工作是確定指令的大小,參數的個數和大小。 利用該信息,可以適當地增加指令指針。

暫無
暫無

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

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