標籤:電腦系統 ia32 資料格式 資料操作 定址方式
電腦系統之彙編---IA32處理器資料格式及資料操作
IA32資料格式:
Intel用術語“字”表示16位元據類型,因此,稱32位元為“雙字”,稱64位元為“四字”。
Char*這裡指的是所有指標類型,注意:c語言新增加的long long是八位元組,但是硬體IA32不支援這個類型。
寄存器(8個32位的寄存器,均以%e開頭)
%eax、%ecx、%edx:調用者儲存(資料)寄存器,當過程p調用q,q可以覆蓋這些寄存器,但是不會改變p中的資料。
%ebx、%esi、%edi:被調用者儲存(資料)寄存器,當過場p調用q,q必須在覆蓋這些寄存器資料前,要把它們儲存到棧,
並在調用結束返回時恢複它們,這些資料p或其他過程需要它們。
%esp、%ebp:有關棧指標的
大多數指令有一個或多個運算元,指示出執行一個操作中要引用的來源資料值,以及放置結果的目標位置。來源資料值可以以常數形式給出,或從寄存器或儲存空間中讀出,結果可以儲存放在寄存器或儲存空間中。
運算元分三種:
>>>1. 立即數即常數,用$開頭,後面加一個整數表示;
>>>2. 寄存器數,對字操作而言表示某個寄存器中的儲存的值;對位元組操作而言是8個單位元組寄存器中的 一個,比如:%al(eax寄存器中的低8位)
>>>3. 儲存空間引用,根據計算出的有效地址來訪問儲存空間的某個位置;包括四部分:立即數位移(lmm)、基底位址暫存器 Eb、變址寄存器 Ei、比例因素s。 有效地址被計算為 Imm + R[Eb] + R[Ei] * s。 (R[Eb]表示寄存器Eb的值,R[Ei]表示寄存器Ei的值,s的值只能是1,2,4或者8) 下表中Mb[addr] 表示對儲存空間在儲存空間中從地址addr開始的b個位元組值的引用。
有關運算元格式表
例如:地址0x100的值是56,那麼運算元0x100的值就是56,屬於絕對定址;$0x100的值0x100,是立即數定址;
電腦系統之彙編---IA32處理器資料格式及資料操作