Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: local/temporary labels in gcc inline assembly

Author: Matt Taylor

Date: 09:43:13 12/09/02

Go up one level in this thread


On December 09, 2002 at 11:12:10, Dieter Buerssner wrote:

>On December 09, 2002 at 10:11:54, Matt Taylor wrote:
>
>>>Thanks.  Could not find the "1f" or "1b" stuff anywhere on the web or in the gcc
>>>docs/info pages.
>>>
>>>Bob
>>
>>I've never seen that particular behavior documented, but I know the 1f/2f/1b
>>stuff is common in GNU assembly.
>
>It is documented in the GNU assembler manual:
>---
>Local Symbol Names
>------------------
>
>   Local symbols help compilers and programmers use names temporarily.
>They create symbols which are guaranteed to be unique over the entire
>scope of the input source code and which can be referred to by a simple
>notation.  To define a local symbol, write a label of the form `N:'
>(where N represents any positive integer).  To refer to the most recent
>previous definition of that symbol write `Nb', using the same number as
>when you defined the label.  To refer to the next definition of a local
>label, write `Nf'-- The `b' stands for"backwards" and the `f' stands
>for "forwards".
>
>   There is no restriction on how you can use these labels, and you can
>reuse them too.  So that it is possible to repeatedly define the same
>local label (using the same number `N'), although you can only refer to
>the most recently defined local label of that number (for a backwards
>reference) or the next definition of a specific local label for a
>forward reference.  It is also worth noting that the first 10 local
>labels (`0:'...`9:') are implemented in a slightly more efficient
>manner than the others.
>
>   Here is an example:
>
>     1:        branch 1f
>     2:        branch 1b
>     1:        branch 2f
>     2:        branch 1b
>
>   Which is the equivalent of:
>
>     label_1:  branch label_3
>     label_2:  branch label_1
>     label_3:  branch label_4
>     label_4:  branch label_3
>[...]
>---
>
>There is a small contradiction: "N repreresents any positive integer"
>and later: "the first 10 local labels (`0:'...`9:')"
>
>>I would have suggested nasm syntax, but that wouldn't get inlined,
>>unfortunately.
>
>gcc cannot produce nasm output from C-code. I guess the inlining part would
>actually work - but wouldn't be of any help, of course.
>
>Regards,
>Dieter

I know.
gcc produces gas code. I find gas distasteful, but that's probably because I
learned Intel syntax first.

-Matt



This page took 0.01 seconds to execute

Last modified: Thu, 15 Apr 21 08:11:13 -0700

Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.