[Docs] Added llvm-mc documentation
authoraabhinavg <tiwariabhinavak@gmail.com>
Mon, 13 Mar 2023 06:22:00 +0000 (11:52 +0530)
committeraabhinavg <tiwariabhinavak@gmail.com>
Tue, 14 Mar 2023 02:53:15 +0000 (08:23 +0530)
Fix #61313

Reviewed By: lattner

Differential Revision: https://reviews.llvm.org/D145844

llvm/docs/CommandGuide/index.rst
llvm/docs/CommandGuide/llvm-mc.rst [new file with mode: 0644]

index bd3305c5d672073d224f6eda144ff309acf22fcd..001883f5c189ad81877b877715860bcd685db990 100644 (file)
@@ -30,6 +30,7 @@ Basic Commands
    llvm-libtool-darwin
    llvm-link
    llvm-lipo
+   llvm-mc
    llvm-mca
    llvm-opt-report
    llvm-otool
diff --git a/llvm/docs/CommandGuide/llvm-mc.rst b/llvm/docs/CommandGuide/llvm-mc.rst
new file mode 100644 (file)
index 0000000..b7a40a1
--- /dev/null
@@ -0,0 +1,156 @@
+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, dissasemble 
+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:: -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.
+ 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::  --preserve-comments 
+
+ Preserve Comments in outputted assembly.
+
+.. option:: --output-asm-variant=<uint>
+
+ Syntax variant to use for output printing.
+
+
+.. 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.
+