[ << ] | [ >> ] | [] | [] | [] | [ ? ] |
This chapter documents the Backend for the 80x86 microprocessor family.
This module is written in 2005-2006,2011,2015-2019,2024 by Frank Wille and is covered by the vasm copyright without modifications.
This module provides the following additional options:
Enables debugging output.
Generate code for the 8086 CPU.
Generate code for the 80186 CPU.
Generate code for the 80286 CPU.
Generate code for the 80386 CPU.
Generate code for the 80486 CPU.
Generate code for the Pentium.
Generate code for the PentiumPro.
Generate code for the Pentium.
Generate code for the PentiumPro.
Generate code for the AMD K6.
Generate code for the AMD Athlon.
Generate code for the Sledgehammer CPU.
Generate code for 64-bit architectures (x86_64).
This backend accepts 80x86 instructions as described in the Intel Architecture Software Developer’s Manual.
The target address type is 32 bits. It is 64 bits when the x86_64 architecture was selected (‘-m64’). Floating point constants in instructions and data are supported and encoded in IEEE format.
Instructions do not need any alignment. Data is aligned to its natural alignment by default.
The backend uses AT&T-syntax! This means the left operands are always the source and the right operand is the destination. Register names have to be prefixed by a ’%’.
The operation size is indicated by a ’b’, ’w’, ’l’, etc. suffix directly appended to the mnemonic. The assembler can also determine the operation size from the size of the registers being used.
Predefined register symbols in this backend:
al cl dl bl ah ch dh bh axl cxl dxl spl bpl sil dil r8b r9b r10b r11b r12b r13b r14b r15b
ax cx dx bx sp bp si di r8w r9w r10w r11w r12w r13w r14w r15w
eax ecx edx ebx esp ebp esi edi r8d r9d r10d r11d r12d r13d r14d r15d
rax rcx rdx rbx rsp ebp rsi rdi r8 r9 r10 r11 r12 r13 r14 r15
es cs ss ds fs gs
cr0 cr1 cr2 cr3 cr4 cr5 cr6 cr7 cr8 cr9 cr10 cr11 cr12 cr13 cr14 cr15
dr0 dr1 dr2 dr3 dr4 dr5 dr6 dr7 dr8 dr9 dr10 dr11 dr12 dr13 dr14 dr15
tr0 tr1 tr2 tr3 tr4 tr5 tr6 tr7
mm0 mm1 mm2 mm3 mm4 mm5 mm6 mm7 xmm0 xmm1 xmm2 xmm3 xmm4 xmm5 xmm6 xmm7 xmm8 xmm9 xmm10 xmm11 xmm12 xmm13 xmm14 xmm15
st st(0) st(1) st(2) st(3) st(4) st(5) st(6) st(7)
This backend extends the selected syntax module by the following directives:
.code16
Sets the assembler to 16-bit addressing mode.
.code32
Sets the assembler to 32-bit addressing mode, which is the default.
.code64
Sets the assembler to 64-bit addressing mode.
This backend performs the following optimizations:
Some known problems of this module at the moment:
This module has the following error messages:
[ << ] | [ >> ] | [] | [] | [] | [ ? ] |