X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=gas%2Fdoc%2Fc-mmix.texi;h=235aff21f9b754175a807320da730c8d9af6ba9e;hb=refs%2Fheads%2Fconcurrent-displaced-stepping-2020-04-01;hp=d1b3016f41aac68dfba82059551b7ca82ae039d5;hpb=062b7c0c141b6d28a037c6acf3a822539e701827;p=deliverable%2Fbinutils-gdb.git diff --git a/gas/doc/c-mmix.texi b/gas/doc/c-mmix.texi index d1b3016f41..235aff21f9 100644 --- a/gas/doc/c-mmix.texi +++ b/gas/doc/c-mmix.texi @@ -1,4 +1,4 @@ -@c Copyright 2001, 2002 Free Software Foundation, Inc. +@c Copyright (C) 2001-2020 Free Software Foundation, Inc. @c This is part of the GAS manual. @c For copying conditions, see the file as.texinfo. @c MMIX description by Hans-Peter Nilsson, hp@bitrange.com @@ -27,25 +27,25 @@ @cindex MMIX options The MMIX version of @code{@value{AS}} has some machine-dependent options. -@cindex @samp{--fixed-special-register-names} command line option, MMIX +@cindex @samp{--fixed-special-register-names} command-line option, MMIX When @samp{--fixed-special-register-names} is specified, only the register names specified in @ref{MMIX-Regs} are recognized in the instructions @code{PUT} and @code{GET}. -@cindex @samp{--globalize-symbols} command line option, MMIX +@cindex @samp{--globalize-symbols} command-line option, MMIX You can use the @samp{--globalize-symbols} to make all symbols global. This option is useful when splitting up a @code{mmixal} program into several files. -@cindex @samp{--gnu-syntax} command line option, MMIX +@cindex @samp{--gnu-syntax} command-line option, MMIX The @samp{--gnu-syntax} turns off most syntax compatibility with @code{mmixal}. Its usability is currently doubtful. -@cindex @samp{--relax} command line option, MMIX +@cindex @samp{--relax} command-line option, MMIX The @samp{--relax} option is not fully supported, but will eventually make the object file prepared for linker relaxation. -@cindex @samp{--no-predefined-syms} command line option, MMIX +@cindex @samp{--no-predefined-syms} command-line option, MMIX If you want to avoid inadvertently calling a predefined symbol and would rather get an error, for example when using @code{@value{AS}} with a compiler or other machine-generated code, specify @@ -55,13 +55,13 @@ symbols, @samp{BIT} symbols, and @code{TRAP} symbols used in @code{mmix} ``system calls''. It also turns off predefined special-register names, except when used in @code{PUT} and @code{GET} instructions. -@cindex @samp{--no-expand} command line option, MMIX +@cindex @samp{--no-expand} command-line option, MMIX By default, some instructions are expanded to fit the size of the operand or an external symbol (@pxref{MMIX-Expand}). By passing @samp{--no-expand}, no such expansion will be done, instead causing errors at link time if the operand does not fit. -@cindex @samp{--no-merge-gregs} command line option, MMIX +@cindex @samp{--no-merge-gregs} command-line option, MMIX The @code{mmixal} documentation (@pxref{mmixsite}) specifies that global registers allocated with the @samp{GREG} directive (@pxref{MMIX-greg}) and initialized to the same non-zero value, will refer to the same global @@ -70,7 +70,7 @@ final addresses aren't known until link-time, but it will do an effort unless the @samp{--no-merge-gregs} option is specified. (Register merging isn't yet implemented in @code{@value{LD}}.) -@cindex @samp{-x} command line option, MMIX +@cindex @samp{-x} command-line option, MMIX @code{@value{AS}} will warn every time it expands an instruction to fit an operand unless the option @samp{-x} is specified. It is believed that this behaviour is more useful than just mimicking @code{mmixal}'s @@ -79,10 +79,25 @@ is specified, and assembly fails otherwise, when an instruction needs to be expanded. It needs to be kept in mind that @code{mmixal} is both an assembler and linker, while @code{@value{AS}} will expand instructions that at link stage can be contracted. (Though linker relaxation isn't yet -implemented in @code{@value{LD}}.) The option @samp{-x} also imples +implemented in @code{@value{LD}}.) The option @samp{-x} also implies @samp{--linker-allocated-gregs}. -@cindex @samp{--linker-allocated-gregs} command line option, MMIX +@cindex @samp{--no-pushj-stubs} command-line option, MMIX +@cindex @samp{--no-stubs} command-line option, MMIX +If instruction expansion is enabled, @code{@value{AS}} can expand a +@samp{PUSHJ} instruction into a series of instructions. The shortest +expansion is to not expand it, but just mark the call as redirectable to a +stub, which @code{@value{LD}} creates at link-time, but only if the +original @samp{PUSHJ} instruction is found not to reach the target. The +stub consists of the necessary instructions to form a jump to the target. +This happens if @code{@value{AS}} can assert that the @samp{PUSHJ} +instruction can reach such a stub. The option @samp{--no-pushj-stubs} +disables this shorter expansion, and the longer series of instructions is +then created at assembly-time. The option @samp{--no-stubs} is a synonym, +intended for compatibility with future releases, where generation of stubs +for other instructions may be implemented. + +@cindex @samp{--linker-allocated-gregs} command-line option, MMIX Usually a two-operand-expression (@pxref{GREG-base}) without a matching @samp{GREG} directive is treated as an error by @code{@value{AS}}. When the option @samp{--linker-allocated-gregs} is in effect, they are instead @@ -157,7 +172,10 @@ specified, the rest of the line is ignored, treated as a comment. The characters @samp{*} and @samp{#} are line comment characters; each start a comment at the beginning of a line, but only at the beginning of a line. A @samp{#} prefixes a hexadecimal number if found elsewhere on a -line. +line. If a @samp{#} appears at the start of a line the whole line is +treated as a comment, but the line can also act as a logical line +number directive (@pxref{Comments}) or a preprocessor control command +(@pxref{Preprocessing}). Two other characters, @samp{%} and @samp{!}, each start a comment anywhere on the line. Thus you can't use the @samp{modulus} and @samp{not} @@ -428,7 +446,7 @@ operand can be omitted, defaulting to a zero value. The directives @samp{WYDE}, @samp{TETRA} and @samp{OCTA} emit constants of two, four and eight bytes size respectively. Before anything else happens for the directive, the current location is aligned to the respective -constant-size bondary. If a label is defined at the beginning of the +constant-size boundary. If a label is defined at the beginning of the line, its value will be that after the alignment. A single operand can be omitted, defaulting to a zero value emitted for the directive. Operands can be expressed as strings (@pxref{Strings}), in which case each @@ -515,7 +533,7 @@ Operand syntax is a bit stricter with @code{@value{AS}} than must write @code{addu $1,$2,3}. You can't LOC to a lower address than those already visited -(i.e. ``backwards''). +(i.e., ``backwards''). A LOC directive must come before any emitted code.