Tool Comparison

From OSDev.wiki
Jump to navigation Jump to search

This is a comparison of various operating system development tools.

x86 Assemblers

Syntax Output Format Instruction Set
AT&T Intel ELF a.out COFF flat 16 bit 32 bit 64 bit
GAS Yes YesTemplate:Ref Yes Yes Yes Yes YesTemplate:Ref Yes YesTemplate:Ref
NASM No Yes Yes Yes Yes Yes Yes Yes YesTemplate:Ref
MASM No Yes No No Yes Yes Yes Yes YesTemplate:Ref
YASM Yes Yes Yes No Yes Yes Yes Yes Yes
FASM No Yes Yes No n/a Yes Yes Yes Yes
JWASM No Yes Yes No n/a Yes Yes Yes No
Sol_asm No YesTemplate:Ref Yes No n/a Yes Yes Yes Yes
  • Template:Note using the .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.
  • 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 only available in NASM 2.x.
  • Template:Note Sol_Asm uses its own syntax, which looks like the Intel syntax.
  • Template:Note 64-bit support is only available in a separate executable, named ml64.

Compilers

Extensions Output format
Inline Assembly ELF a.out flat PE
gcc Yes Yes Yes Yes Yes
msvc Yes No No NoTemplate:Ref Yes
icl Yes No No No Yes

Linkers

Name OMF/OBJ Input Output Flat Binary Images Set Code Address Library Support Supports Debug Info 32bit Code
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