Tool Comparison: Difference between revisions
From OSDev Wiki
Jump to navigation
Jump to search
(FASM does have COFF support (see http://flatassembler.net/docs.php?article=manual#2.4.3))
m (→Linkers )
Line 219:
Line 219:
|-
|-
! rowspan=2 | Name
! rowspan=2 | Name
! colspan=(追記) 5 (追記ここまで)| Input
! colspan=(削除) 4 (削除ここまで)| Input
! colspan=5 | Output
! colspan=5 | Output
! rowspan=2 | Flat Binary Images
! rowspan=2 | Flat Binary Images
Line 228:
Line 227:
! rowspan=2 | 32bit Code
! rowspan=2 | 32bit Code
|-
|-
(追記) ! OMF/ OBJ (追記ここまで)
! Win32/ COFF
! Win32/ COFF
! ELF
! ELF
Revision as of 21:25, 12 June 2016
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 | Yes[1] | Yes | Yes | Yes | Yes | Yes[2] | Yes | Yes[3] |
| NASM | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes[4] |
| YASM | Yes | Yes | Yes | No | Yes | Yes | Yes | Yes | Yes |
| FASM | No | Yes | Yes | No | Yes | Yes | Yes | Yes | Yes |
| JWASM | No | Yes | Yes | No | Yes | Yes | Yes | Yes | Yes |
| MASM [5] | No | Yes | No | No | Yes | Yes | Yes | Yes | Yes[6] |
| Sol_asm | No | Yes[7] | 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 |
- ↑ using the
.intel_syntaxdirective. 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.
- ↑ Because of the license it may be illegal to use MASM for "non-windows development"
- ↑ 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[8] | 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 |
- ↑ Visual Studio can emit
.COMfiles.
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 | |
Retrieved from "https://wiki.osdev.org/index.php?title=Tool_Comparison&oldid=19354"