為什麼目的運算元不能是立即數?

2021-10-10 12:08:25 字數 739 閱讀 9578

<1>為什麼目的運算元不能為立即數?(是結果沒有地方存麼?)

<2>為什麼段暫存器之間不能傳遞資料?

<3>為什麼目的運算元不能為段暫存器?但有的大學教程說除了cs外,別的可以,真把我搞糊塗了.

<4>為什麼兩儲存器位址間不能傳送資料?

解答:

你的問題是初學者常見的問題。問題的解答很簡單,處理器設計時已經確定這樣實現,無法改變。

具體來說:

<1>為什麼目的運算元不能為立即數?(是結果沒有地方存麼?)

立即數是編碼在處理器指令**中的,而處理器指令**執行時通常禁止修改。所以,結果無法存在指令**中。

<2>為什麼段暫存器之間不能傳遞資料?

段暫存器的改變會影響程式的執行,不應該隨意改變。所以,設計師考慮不設計這個功能的指令。畢竟,設計一條指令就需要具有相應的實現電路。

<3>為什麼目的運算元不能為段暫存器?但有的大學教程說除了cs外,別的可以,真把我搞糊塗了.

少數幾個指令允許段暫存器為目的運算元,例如mov和pop指令。但通常不要改變cs、即將cs為目的運算元,因為這樣程式執行的位置就改變了。絕大多數指令都不把段暫存器作為運算元,不管是目的運算元還是源運算元,例如算術邏輯運算指令。

<4>為什麼兩儲存器位址間不能傳送資料?

如果設計兩儲存器位址互相傳送資料,在指令**中需要兩個指明儲存器位址的字段,通常會大大增加指令**的長度,還會增加指令解碼的難度和電路複雜性。

建構函式為什麼不能是虛函式

1.從儲存空間角度,虛函式對應乙個指向vtable虛函式表的指標,這大家都知道,可是這個指向vtable的指標其實是儲存在物件的記憶體空間的。問題出來了,如果建構函式是虛的,就需要通過 vtable來呼叫,可是物件還沒有例項化,也就是記憶體空間還沒有,怎麼找vtable呢?所以建構函式不能是虛函式。...

建構函式為什麼不能是虛函式

1.從 儲存空間角度,虛函式對應乙個指向vtable虛函式表的指標,這大家都知道,可是這個指向vtable的指標其實是儲存在物件的記憶體空間的。問題出來了,如果建構函式是虛的,就需要通過 vtable來呼叫,可是物件還沒有例項化,也就是記憶體空間還沒有,怎麼找vtable呢?所以建構函式不能是虛函式...

建構函式為什麼不能是虛函式

原文 1.從儲存空間角度,虛函式對應乙個指向vtable虛函式表的指標,這大家都知道,可是這個指向vtable的指標其實是儲存在物件的記憶體空間的。問題出來了,如果建構函式是虛的,就需要通過 vtable來呼叫,可是物件還沒有例項化,也就是記憶體空間還沒有,怎麼找vtable呢?所以建構函式不能是虛...