
Add support for syntax highlighting assembly. The patch introduces new RAII helper called WithMarkup that takes care of both emitting colors and markup annotations. It makes adding markup easier and ensures colors and annotations remain consistent. This patch adopts the new helper in the AArch64 backend. If your backend already uses markup annotations, adoption is as easy as using the new MCInstPrinter::markup overload. Differential revision: https://reviews.llvm.org/D159162
167 lines
4.5 KiB
ReStructuredText
167 lines
4.5 KiB
ReStructuredText
llvm-mc - LLVM Machine Code Playground
|
|
======================================
|
|
|
|
.. program:: llvm-mc
|
|
|
|
SYNOPSIS
|
|
--------
|
|
|
|
:program:`llvm-mc` [*options*] [*filename*]
|
|
|
|
DESCRIPTION
|
|
-----------
|
|
|
|
The :program:`llvm-mc` command take input as the assembly code for a
|
|
specified architecture and generate object file or executable as a output
|
|
for a specified architecture.
|
|
|
|
:program:`llvm-mc` provide powerful set of the tool for working with the machine code such
|
|
as encoding of their instruction and their internal representation, disassemble
|
|
string to bytes etc.
|
|
|
|
The choice of architecture for the output assembly code is automatically
|
|
determined from the input file, unless the :option:`--arch` option is used to
|
|
override the default.
|
|
|
|
OPTIONS
|
|
-------
|
|
|
|
If the :option:`-o` option is omitted, then :program:`llvm-mc` will send its output
|
|
to standard output if the input is from standard input. If the :option:`-o`
|
|
option specifies "``-``", then the output will also be sent to standard output.
|
|
|
|
If no :option:`-o` option is specified and an input file other than "``-``" is
|
|
specified, then :program:`llvm-mc` creates the output filename by taking the input
|
|
filename, removing any existing ``.s`` extension, and adding a ``.o`` suffix.
|
|
|
|
Other :program:`llvm-mc` options are described below.
|
|
|
|
End-user Options
|
|
~~~~~~~~~~~~~~~~
|
|
|
|
.. option:: --help
|
|
|
|
Display available options (--help-hidden for more).
|
|
|
|
.. option:: -o <filename>
|
|
|
|
Use ``<filename>`` as the output filename. See the summary above for more
|
|
details.
|
|
|
|
.. option:: --arch=<string>
|
|
|
|
Target arch to assemble for, see -version for available targets.
|
|
|
|
.. option:: --as-lex
|
|
|
|
Apply the assemblers "lexer" to break the input into tokens and print each of them out.
|
|
This is intended to help develop and test an assembler implementation.
|
|
|
|
.. option:: --assemble
|
|
|
|
Assemble assembly file (default), and print the result to assembly.
|
|
This is useful to design and test instruction parsers, and can be a useful tool when combined with other llvm-mc flags.
|
|
For example, this option may be useful to transcode assembly from different dialects, e.g. on Intel where you can use
|
|
-output-asm-variant=1 to translate from AT&T to Intel assembly syntax.
|
|
It can also be combined with --show-encoding to understand how instructions are encoded.
|
|
|
|
.. option:: --disassemble
|
|
|
|
Parse a series of hex bytes, and print the result out as assembly syntax.
|
|
|
|
|
|
|
|
.. option:: --mdis
|
|
|
|
Marked up disassembly of string of hex bytes.
|
|
|
|
.. option:: --cdis
|
|
|
|
Colored disassembly of string of hex bytes.
|
|
|
|
.. option:: --filetype=[asm,null,obj]
|
|
|
|
Sets the output filetype. Setting this flag to `asm` will make the tool
|
|
output text assembly. Setting this flag to `obj` will make the tool output
|
|
an object file. Setting it to `null` causes no output to be created and can be
|
|
used for timing purposes. The default value is `asm`.
|
|
|
|
.. option:: -g
|
|
|
|
Generate DWARF debugging info for assembly source files.
|
|
|
|
.. option:: --large-code-model
|
|
|
|
Create CFI directives that assume the code might be more than 2 GB.
|
|
|
|
.. option:: --main-file-name=<string>
|
|
|
|
Specify the name we should consider the input file.
|
|
|
|
|
|
.. option:: --masm-hexfloats
|
|
|
|
Enable MASM-style hex float initializers (3F800000r).
|
|
|
|
|
|
.. option:: -mattr=a1,+a2,-a3,...
|
|
Target specific attributes (-mattr=help for details).
|
|
|
|
.. option:: --mcpu=<cpu-name>
|
|
|
|
Target a specific cpu type (-mcpu=help for details).
|
|
|
|
.. option:: --triple=<string>
|
|
|
|
Target triple to assemble for, see -version for available targets.
|
|
|
|
.. option:: --split-dwarf-file=<filename>
|
|
|
|
DWO output filename.
|
|
|
|
.. option:: --show-inst-operands
|
|
|
|
Show instructions operands as parsed.
|
|
|
|
.. option:: --show-inst
|
|
|
|
Show internal instruction representation.
|
|
|
|
.. option:: --show-encoding
|
|
|
|
Show instruction encodings.
|
|
|
|
.. option:: --save-temp-labels
|
|
|
|
Don't discard temporary labels.
|
|
|
|
.. option:: --relax-relocations
|
|
|
|
Emit R_X86_64_GOTPCRELX instead of R_X86_64_GOTPCREL.
|
|
|
|
.. option:: --print-imm-hex
|
|
|
|
Prefer hex format for immediate values.
|
|
|
|
.. option:: --preserve-comments
|
|
|
|
Preserve Comments in outputted assembly.
|
|
|
|
.. option:: --output-asm-variant=<uint>
|
|
|
|
Syntax variant to use for output printing. For example, on x86 targets
|
|
--output-asm-variant=0 prints in AT&T syntax, and --output-asm-variant=1 prints
|
|
in Intel/MASM syntax.
|
|
|
|
.. option:: --compress-debug-sections=[none|zlib|zstd]
|
|
|
|
Choose DWARF debug sections compression.
|
|
|
|
|
|
EXIT STATUS
|
|
-----------
|
|
|
|
If :program:`llvm-mc` succeeds, it will exit with 0. Otherwise, if an error
|
|
occurs, it will exit with a non-zero value.
|
|
|