Tool Comparison: Difference between revisions

From OSDev.wiki
Jump to navigation Jump to search
[unchecked revision][unchecked revision]
Content added Content deleted
m (→‎x86 Assemblers: Fixed formatting.)
Line 165: Line 165:
| {{Yes}}
| {{Yes}}
| ?
| ?
| {{Yes}}
| {{Yes}}
|-
! clang
| {{Yes}}
| {{Yes}}
| {{No}}
| {{Yes}}
| {{Yes}}
| {{Yes}}
| {{No}}
| {{Yes}}
| {{Yes}}
| {{Yes}}
| {{Yes}}

Revision as of 18:17, 28 November 2014

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
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 Yes Yes Yes Yes Yes
MASMTemplate:Ref No Yes No No Yes Yes Yes Yes YesTemplate:Ref
Sol_asm No YesTemplate:Ref Yes No n/a Yes Yes Yes Yes
WASM No Yes No No No No Yes Yes Yes
AS86 No Yes No No No Yes Yes Yes No
llvm-mc Yes Yes Yes Yes Yes No No 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 (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.
  • Template:Note 64-bit support is only available in NASM 2.x.
  • Template:Note Because of the license it may be illegal to use MASM for "non-windows development"
  • Template:Note 64-bit support is only available in a separate executable, named ml64.
  • Template:Note 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 No Yes Yes Yes No Yes Yes
msvc Yes No No NoTemplate:Ref 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

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