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:: --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.

