This is a comparison of various operating system development tools.
x86 Assemblers
↑ Using the .intel_syntax
directive. Several opcodes will still use the AT&T name.
↑ 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.
↑ You have to choose the instruction set at compile time (of the assembler). GAS can not assemble for more than one operating mode at a time, i.e. you would need one GAS for 32bit and one GAS for 64bit if you'd want to mix those two.
↑ 64-bit support is only available in NASM 2.x.
↑ 64-bit support is only available in a separate executable, named ml64.
↑ Sol_Asm uses its own syntax, which looks like the Intel syntax.
Compilers
Extensions
Output format
Inline Assembly
ELF
a.out
flat
PE
COFF
16-bit code segments
32-bit code segments
64-bit code segments
GCC
Yes
Yes
Yes
Yes
Yes
Yes
?
Yes
Yes
Clang
Yes
Yes
Yes
No
Yes
Yes
No
Yes
Yes
msvc
Yes
No
No
No[Note 1]
Yes
Yes
Version 4.X
Yes
Yes
icl
Yes
No
No
No
Yes
Yes
No
Yes
Yes
Watcom
Yes
No
No
No
Yes
Yes
Yes
Yes
Yes
Smaller C
Yes
Yes
Yes
Yes
Yes
No
Yes (incl. huge & unreal mode(l)s)[Note 2]
Yes
No
Linkers
Name
Input
Output
Flat Binary Images
Set Code Address
Library Support
Supports Debug Info
32bit Code
OMF/ OBJ
Win32/ COFF
ELF
A.OUT
Others
Win32/ PE
Win32/ DLL
ELF
A.OUT
Others
JLoc
Yes
No
No
No
No
DOS/COM
Yes
Yes
No
OMF/OBJ
Yes
ALink
Yes
Yes
No
No
DJGPP/COFF
Yes
Yes
No
No
DOS/COM DOS/EXE
No
Yes
Yes
No
Yes
LD
Yes
Yes
Yes
Yes
DJGPP/COFF OMF/COFF
Yes
Yes
Yes
Yes
various
Yes
Yes
Yes
ECOFF DWARF STABS
Yes
TLink
Yes
Yes
No
No
Yes
Yes
No
No
DOS/EXE DOS/COM
No
Yes
Yes
OMF/OBJ
Yes
Link
Yes
Yes
No
No
Yes
Yes
No
No
DOS/EXE DOS/COM LE
No
Yes
Yes
CODEVIEW DWARF
Yes
VAL
Yes
No
No
No
No
DOS/EXE
No
No
No
Yes
No
WLink
Yes
Yes
Yes
No
Yes
Yes
Yes
No
DOS/EXE DOS/COM LE Pharlap Novell_NLM Causeway QNX
Yes
Yes
Yes
WATCOM CODEVIEW DWARF
Yes
smlrl
No
No
Yes
No
Yes
No
Yes
Yes
DOS/COM DOS/EXE MACH-O
Yes
Yes
Yes
No
Yes
LLD
Yes
Yes
Yes
Yes