mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-13 14:51:18 +08:00
extend.texi (Size of an asm): Really move node to its position.
* doc/extend.texi (Size of an asm): Really move node to its position. From-SVN: r210577
This commit is contained in:
parent
d614591620
commit
db2687a001
@ -7267,28 +7267,6 @@ output of the assembler instruction directly into a particular register.
|
||||
specified for that operand in the @code{asm}.)
|
||||
@end itemize
|
||||
|
||||
@node Size of an asm
|
||||
@subsection Size of an @code{asm}
|
||||
|
||||
Some targets require that GCC track the size of each instruction used
|
||||
in order to generate correct code. Because the final length of the
|
||||
code produced by an @code{asm} statement is only known by the
|
||||
assembler, GCC must make an estimate as to how big it will be. It
|
||||
does this by counting the number of instructions in the pattern of the
|
||||
@code{asm} and multiplying that by the length of the longest
|
||||
instruction supported by that processor. (When working out the number
|
||||
of instructions, it assumes that any occurrence of a newline or of
|
||||
whatever statement separator character is supported by the assembler --
|
||||
typically @samp{;} --- indicates the end of an instruction.)
|
||||
|
||||
Normally, GCC's estimate is adequate to ensure that correct
|
||||
code is generated, but it is possible to confuse the compiler if you use
|
||||
pseudo instructions or assembler macros that expand into multiple real
|
||||
instructions, or if you use assembler directives that expand to more
|
||||
space in the object file than is needed for a single instruction.
|
||||
If this happens then the assembler may produce a diagnostic saying that
|
||||
a label is unreachable.
|
||||
|
||||
@menu
|
||||
* Global Reg Vars::
|
||||
* Local Reg Vars::
|
||||
@ -7467,6 +7445,28 @@ register int *result asm ("r0");
|
||||
asm ("sysint" : "=r" (result) : "0" (p1), "r" (p2));
|
||||
@end smallexample
|
||||
|
||||
@node Size of an asm
|
||||
@subsection Size of an @code{asm}
|
||||
|
||||
Some targets require that GCC track the size of each instruction used
|
||||
in order to generate correct code. Because the final length of the
|
||||
code produced by an @code{asm} statement is only known by the
|
||||
assembler, GCC must make an estimate as to how big it will be. It
|
||||
does this by counting the number of instructions in the pattern of the
|
||||
@code{asm} and multiplying that by the length of the longest
|
||||
instruction supported by that processor. (When working out the number
|
||||
of instructions, it assumes that any occurrence of a newline or of
|
||||
whatever statement separator character is supported by the assembler --
|
||||
typically @samp{;} --- indicates the end of an instruction.)
|
||||
|
||||
Normally, GCC's estimate is adequate to ensure that correct
|
||||
code is generated, but it is possible to confuse the compiler if you use
|
||||
pseudo instructions or assembler macros that expand into multiple real
|
||||
instructions, or if you use assembler directives that expand to more
|
||||
space in the object file than is needed for a single instruction.
|
||||
If this happens then the assembler may produce a diagnostic saying that
|
||||
a label is unreachable.
|
||||
|
||||
@node Alternate Keywords
|
||||
@section Alternate Keywords
|
||||
@cindex alternate keywords
|
||||
|
Loading…
x
Reference in New Issue
Block a user