定址方式與指令系統

來源:互聯網
上載者:User

立即數定址方式的指令格式有:
  OPC D
  OPC R, D
  OPC R, R, D
  OPC M, D 
  上述指令中的OPC為操縱碼,R為寄存器,M為主存單元,D為立即數。上面是幾種典型的立即數型指令:
  第1條指令為一地址指令,第一地址(也是目的地址)為隱含的累加器,第二地址是立即數。
  第2條指令為兩地址指令,第一地址(也是目的地址)為寄存器,第二地址是立即數。
  第3條指令為三地址指令,第一地址(也是目的地址)和第二地址為寄存器,第三地址是立即數,當然,也可以第二地址是立即數。
  第4條指令是儲存空間型的二地址指令,第一地址(也是目的地址)指向主儲存空間,第二地址是立即數。 
  立即數定址方式的優點是:
  1.指令的執行速度快,因為,不需要訪問寄存器或主儲存空間,執行指令所需要的資料可以直接從指令中獲得;
  2.節省了資料存放區單元,因為立即數定址方式不需要存放資料的寄存器或主儲存空間單元。
  立即數定址方式的缺點是:
  1.只能用於源運算元的定址;
  2.資料的長度不能太長,因為一條指令通常要分為多個欄位,只能用其中的一個欄位來表示立即數。
  3.大量使用立即數定址方式會使程式的通用性下降。

寄存器定址方式的指令格式主要有:
  OPC R
  OPC R, R
  OPC R, R, R
  OPC R, M 
  前三種分別是一地址、二地址和三地址寄存器定址指令,其中的三地址指令主要用於向量處理機和VLIW(超長指令字)處理機中。第四種指令在RISC(精簡指令系統電腦)中只允許LOAD和STORE指令是使用,而在CISC(複雜指令系統電腦)中,一般的運算指令也可以使用這種形式。 
  對於輸入輸出指令和一些特殊的處理機控制指令,指令中所給出的寄存器可能是裝置的控制寄存器、狀態寄存器或處理機的程式計數器、堆棧指標、狀態字寄存器等。
  寄存器定址方式的優點主要有:
  1.指令字長短。由於通用寄存器的數量一般只有幾十個,在指令中只需很少幾位就能表示一個運算元的地址。例如,在IBM370系列電腦中,有16個通用寄存器,只要用4個二進位位就能表示一個運算元的地址,即使是三地址指令,也只要12位地址碼。
  2.指令執行速度快。由於寄存器的訪問速度很快,與主儲存空間相比,訪問時間幾乎可以忽略不計,因此,大多數寄存器型指令都能在一個節拍內完成。
  對於那些要多次使用的資料,把它們存放在通用寄存器中,能夠大幅度提高程式的執行速度。通常,資料是放在通用寄存器中,還是放在記憶體中,要通過編譯器來分配。
  另外,要特別指出:對於用得最為普遍得二地址指令,必須要有通用寄存器的支援,否則,程式的執行速度將明顯下降。 
  3.支援向量、矩陣運算。當通用寄存器的數量比較多時,可以把一個向量或向量的一部分放在通用寄存器內,從而提高運算速度。
  寄存器定址方式也有明顯的缺點,主要有:
  1.不利於最佳化編譯。由於通用寄存器的速度與主儲存空間相比要快得多,因此,通用寄存器分配得是否合理,直接影響到程式的執行速度。通常要把那些連續使用或用得比較頻繁的變數分配在通用寄存器中,這就給編譯器的最佳化設計造成了很大的困難。這說明,通用寄存器型機器不適應進階語言的資料模型。
  另外,通用寄存器的不對稱性也對最佳化編譯帶來很大的麻煩。
  在IBM370系列機中規定:R0寄存器不能作變址寄存器和基底位址暫存器使用,對於雙字長指令只能用編號是偶數的通用寄存器等。
  在小型電腦PDP-11中,限制更多:R0用於宏調用,隱含存放宏調用的傳回值,R5在進階語言與組合語言串連時使用,R6兼作堆棧指標,R7兼作程式計數器,R0至R5可兼作變址寄存器,對於雙字長指令也只能用編號是偶數的寄存器等。 
  2.現場切換困難。在程式運行過程中,當發生調用、中斷、分時切換等情況時,要把有關通用寄存器中內容都儲存到主儲存空間中,在程式返回時,再全部恢複這些通用寄存器中的內容。通用寄存器的數量越多,儲存和恢複所需要的時間就越長。
  為瞭解決這一問題,目前的多數處理機都設定有兩套或兩套以上的通常寄存器,程式員只能看到其中的一套通用寄存器,當發生現場切換時,硬體自動切換到另一套通用寄存器。例如,美國SUN公司的SPARC處理機,設定有8套通用寄存器,採用重疊寄存器視窗技術,程式員能夠看到的32個通用寄存器分成三個部分:局部寄存器、與上層調用串連的寄存器和與下層調用串連的寄存器,在與上層調用串連的寄存器中存放由上層調用帶給本層的變數,在與下層串連的寄存器中存放本層調用傳送給下一層調用的變數,最後一層的與下層串連寄存器和第一層的與上層串連寄存器完全重疊。 
  3.硬體複雜

 在寄存器中也可以存放記憶體位址,稱為寄存器間接定址方式。
  由於通用寄存器的字長可以比較長(如32位、64位等),在採用寄存器間接定址方式時,在通用寄存器中可以存放字長很長的主存地址。
  對於資料字長為64位的電腦系統,在一個通用寄存器中不僅可以存放一個字長比較長的主存地址,還可以同時存放地址的位移量及各種標誌等其它許多資訊。
  另外,在有些電腦系統中,還設定有寄存器自動變址。假設有效地址為EA,地址的增量為d,在採用位元組編址的32位電腦系統中,d=4,寄存器自動變址的有效地址計算過程如下:
  寄存器間接定址:EA=(R)或EA=@R
  寄存器自動增定址:EA=(R)+ d ,R(R)+ d
  寄存器自動減定址:EA=(R)- d ,R(R)- d
  對於寄存器自動變址,有先增(減)地址後使用和先使用後增(減)地址等不同方式。例如,對於先增地址後使用的寄存器自動增定址方式,有效地址的計算過程是:先做R(R)+ d,然後得到有效地址EA=(R);而先使用後增地址的寄存器自動增定址方式,有效地址的計算過程是:先得到有效地址EA=(R),然後做R(R)+ d。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.