text: 定址模式設計中，指令集架構的一部分。各個指令有不同的定址模式，這些定址模式決定此架構下的機器語言指令對應的運算數。定址模式會透過暫存器中的數值或機器指令中的常數來計算運算數的記憶體位址。在計算機程式設計中，定址模式主要是組合語言使用者和編譯器編寫者需要關注的。對於一個相關的概念，請交指令集，它涉及到任何指令使用任何定址模式的能力。警告.注意，各種定址模式都沒有一個被普遍接受的的名稱。不同的作者和計算機制造商可以為相同的定址模式賦予不同的名稱，或者為不同的定址模式賦予相同的名稱。術語“定址模式”本身也有不同的解釋：可以解釋為“儲存器地址計算方式”，也可以解釋為“運算元訪問方式”。 在第一種解釋下，不從儲存器讀取或寫入儲存器的指令被認為沒有“定址模式”。 第二種解釋允許諸如VAX的機器使用立即數模式位來允許暫存器或立即數。 只有第一種解釋適用於諸如“載入有效地址”之類的指令。下面列出的定址模式分為程式碼定址和資料定址。 大多數計算機體系結構都保持這種區別，但是存在一些允許在任何上下文中使用任何定址模式使用的體系結構。下面的說明純粹具有代表性，以說明定址模式，並不一定反映任何特定計算機使用的助記符。定址模式的數量.不同的計算機體系結構在硬體中提供的定址模式數量上有很大差異。 消除複雜定址模式並僅使用一個或幾個更簡單的定址模式有一些好處，即使它需要一些額外的指令，也許還需要一個額外的暫存器。 如果只有一些簡單的定址模式，那麼設計管流水線CPU將變得更為簡單。大多數RISC架構只有大約五種簡單的定址模式，而DECCAX等CISC架構有十幾種定址模式，其中一些非常複雜。 IBM System/360架構只有三種定址模式，System/390又添加了一些。當只有少數定址模式時，所需的特定定址模式通常在指令程式碼中編碼。 但是當存在許多定址模式時，通常在指令中留出特定欄位來指定定址模式。 DEC VAX允許幾乎所有指令有多個儲存器運算元，因此保留每個運算元說明符的前幾位以指示該特定運算元的定址模式。 保持定址模式指定符位與操作碼操作位分離產生正交指令集 。即使在具有許多定址模式的計算機上，實際程式的測量表明下面列出的簡單定址模式佔所有定址模式的約90％或更多。 由於大多數此類測量基於編譯器從高階語言生成的程式碼，因此這在某種程度上反映了所使用的編譯器的侷限性。對程式碼的定址模式.絕對定址/直接定址.|jump| address |(有效PC位址 = address)絕對定址指令的有效地址是地址引數本身，無需修改。PC相對定址.|jump| offset | 相對跳轉指令(有效PC位址 = 下一條指令的位址 + offset，offset 可為負數)PC對定址的有效地址是下一條指令地址加上偏移引數。 通常對該偏移是有符號數，以允許跳轉到指令之前和之後的程式碼。這種定址方式的跳轉指令特別有用，因為常見的跳轉指令的目標是是附近的指令，8或10位偏移就足夠了。PC相對定址的另一個優點是程式碼可以是位置無關的 ，即它可以載入到儲存器中的任何地方而無需調整任何地址。這種定址模式的某些版本可以是有條件的，這些條件例如兩個暫存器之間的關係：“如果reg1 = reg2跳轉”、一個暫存器自身：“跳轉除非reg1 = 0”或者隱含地狀態暫存器中某些位。暫存器間接定址.|jumpVia| reg |(有效PC位址 = 'reg'中的值)對資料的定址模式.暫存器定址.| mul | reg1| reg2| reg3| reg1 := reg2 * reg3;這種“定址模式”沒有有效地址，在某些計算機上不被認為是定址模式。在此示例中，所有運算元都在暫存器中，結果放在暫存器中。基址加偏移量定址，及其變種.有時被稱為“偏移定址”| load | reg | base| offset | reg := RAM[base + offset](有效地址 = offset + base 暫存器的內容)立即數/字面量定址.| add | reg1| reg2| constant | reg1 := reg2 + constant;這種“定址模式”沒有有效地址，並且在某些計算機上不被認為是定址模式。常量可以是有符號或無符號的。 例如， codice_1將十六進位制值“FEEDABBA”值移動到暫存器D0中。運算元的值儲存在指令本身中，而不是使用記憶體中的運算元。隱含定址.隱含定址模式未明確指定源和/或目標的有效地址。操作碼隱含源。隱含的定址在較舊的計算機上很常見。 這樣的計算機通常只有一個暫存器，可以在其中執行算術-累加器。 這種累加器機器幾乎在每個指令中都隱含地引用了累加器。 例如，操作a:= b + c;可以使用序列load b; add c; store a;“load”和“add”指令都隱含目的暫存器。後來的計算機通常具有多個通用暫存器，它們可以是算術的源暫存器和/或目的暫存器，因此後來的計算機需要一些其他定址模式來指定算術的源暫存器和目的暫存器。
metadata: erhwenkuo/wikipedia-zhtw
metadata: 定址模式
metadata: https://zh.wikipedia.org/wiki?curid=6507181