Tool Comparison: Difference between revisions
From OSDev Wiki
Jump to navigation
Jump to search
(annotated nasm+64bit combination (not an official release))
m (→x86 Assemblers: modified due to NASM release 2.0)
Line 67:
Line 67:
{{note|3}} You have to choose the instruction set at compile time. GAS can not assemble for more than one operating mode at a time
{{note|3}} You have to choose the instruction set at compile time. GAS can not assemble for more than one operating mode at a time
{{note|4}} 64-bit support is (削除) currently (削除ここまで)only available in (削除) the (削除ここまで)NASM 2.(削除) 0 release candidates (削除ここまで).
{{note|4}} 64-bit support is only available in NASM 2.(追記) x (追記ここまで).
==Compilers==
==Compilers==
Revision as of 08:22, 1 December 2007
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 | Yes[1] | Yes | Yes | Yes | Yes[2] | Yes | Yes[3] |
| NASM | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes[4] |
| YASM | Yes | Yes | Yes | No | Yes | Yes | Yes | Yes |
| FASM | No | Yes | Yes | No | Yes | Yes | Yes | Yes |
↑ using .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. See [Here]
↑ You have to choose the instruction set at compile time. GAS can not assemble for more than one operating mode at a time
↑ 64-bit support is only available in NASM 2.x.
Compilers
| Extensions | Output format | ||||
|---|---|---|---|---|---|
| Inline Assembly | ELF | a.out | flat | PE | |
| gcc | Yes | Yes | Yes | Yes | Yes |
| Visual Studio | Yes | No | No | No[5] | Yes |
↑ 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 |
Retrieved from "https://wiki.osdev.org/index.php?title=Tool_Comparison&oldid=4966"