Compilation of computer systems --- IA32 processor data format and data operations, compilation --- ia32
Compilation of computer systems-IA32 processor data format and Data Operations
IA32 data format:
Intel uses the term "word" to indicate the 16-bit data type. Therefore, 32-bit data is called "double-digit" and 64-bit data is called "four-character ".
Char * indicates all pointer types. Note: The New long in C language is octal, but the hardware IA32 does not support this type.
Registers (8 32-bit registers, all beginning with % e)
% Eax, % ecx, and % edx: The caller saves (data) registers. When p calls q during the process, q can overwrite these registers without changing the data in p.
% Ebx, % esi, and % edi: The caller saves the (data) registers. When the pass p calls q, q must save them to the stack before overwriting the register data,
And restore them when the call ends. The data p or other processes need them.
% Esp, % ebp:
Most commands have one or more operands, indicating the source data value to be referenced during the execution of an operation, and the target location where the result is placed. The source data value can be given as a constant or read from a register or memory, and the result can be saved in a register or memory.
There are three operands:
>>> 1. Immediate number is a constant, starting with $, followed by an integer;
>>> 2. number of registers. For word operations, it indicates the value saved in a register. For byte operations, it is one of eight single-byte registers, for example, % al (eight lower bits in the eax register)
>>> 3. memory Reference, which is used to access a location of the memory based on the calculated valid address. It consists of four parts: immediate number offset (lmm), base address register Eb, address register Ei, and proportional factor s. The valid address is calculated as Imm + R [Eb] + R [Ei] * s. (R [Eb] indicates the Eb value of the Register. R [Ei] indicates the Ei value of the Register. The value of s can only be 1, 2, 4, or 8) in the following table, Mb [addr] indicates a reference to the B-byte values starting from the address addr in the memory.
Operand format table
For example, if the address 0x100 value is 56, the operand 0x100 value is 56, which is an absolute addressing; $0x100 value 0x100 is an immediate addressing;