Tool Comparison
This is a comparison of various osdev tools
x86 Assemblers
Syntax | Output Format | Instruction Set | ||||||
---|---|---|---|---|---|---|---|---|
AT&T | Intel | ELF | a.out | flat | 16 bit | 32 bit | 64 bit | |
GAS | Yes | YesTemplate:Ref | Yes | Yes | Yes | YesTemplate:Ref | Yes | YesTemplate:Ref |
NASM | No | Yes | Yes | Yes | Yes | Yes | Yes | YesTemplate:Ref |
YASM | Yes | Yes | Yes | No | Yes | Yes | Yes | Yes |
FASM | No | Yes | Yes | No | Yes | Yes | Yes | Yes |
Template:Note using .intel_syntax directive. Several opcodes will still use the AT&T name.
Template:Note While GAS normally writes only "pure" 32-bit i386 code, it has limited support for writing code to run in real mode or in 16-bit protected mode code segments. See [Here]
Template:Note You have to choose the instruction set at compile time. GAS can not assemble for more than one operating mode at a time
Template:Note 64-bit support is currently only available in the NASM 2.0 release candidates.
Compilers
Extensions | Output format | ||||
---|---|---|---|---|---|
Inline Assembly | ELF | a.out | flat | PE | |
gcc | Yes | Yes | Yes | Yes | Yes |
Visual Studio | Yes | No | No | NoTemplate:Ref | Yes |
Template:Note Visual Studio can emit .COM files
Linkers
Name | OMF/OBJ | Input | Output | Flat Binary Images | Set Code Address | Library Support | Supports Debug Info | 32bit Code |
---|---|---|---|---|---|---|---|---|
JLoc | Yes | DOS/COM | Yes | Yes | No | OMF/OBJ | Yes | |
ALink | Yes | Win32/COFF DJGPP/COFF | DOS/COM DOS/EXE Win32/PE Win32/DLL | No | Yes | Yes | No | Yes |
LD | Yes | OMF/COFF DJGPP/COFF Win32/COFF A.OUT ELF | ELF A.OUT Win32/PE Win32/DLL +more | Yes | Yes | Yes | ECOFF DWARF STABS | Yes |
TLink | Yes | Win32/COFF | DOS/EXE DOS/COM Win32/DLL Win32/PE | No | Yes | Yes | OMF/OBJ | Yes |
Link | Yes | Win32/COFF | DOS/EXE DOS/COM Win32/PE Win32/DLL LE | No | Yes | Yes | CODEVIEW DWARF | Yes |
VAL | Yes | DOS/EXE | No | No | No | Yes | No | |
WLink | Yes | Win32/COFF ELF | DOS/EXE DOS/COM LE ELF Win32/PE Win32/DLL Pharlap Novell_NLM Causeway QNX | No | Yes | Yes | WATCOM CODEVIEW DWARF | Yes |