Computer Chess Club Archives


Search

Terms

Messages

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

Author: Matt Taylor

Date: 07:11:54 12/09/02

Go up one level in this thread


On December 09, 2002 at 09:53:33, Robert Hyatt wrote:

>On December 09, 2002 at 00:24:28, Dieter Buerssner wrote:
>
>>On December 08, 2002 at 23:55:36, Robert Hyatt wrote:
>>
>>>Here is a question I can not find an answer to:
>>>
>>>How can I define a local lable in a gcc inline assembly block of code?
>>>
>>>IE I want to do this:
>>>
>>>        test   %eax,%eax
>>>        jz     skip
>>jz 1f
>>>        do something
>>>skip:
>>1:
>>
>>"f" in 1f for forward jumping. For backward jumps, "b". Labels are just
>>numerical values 1-9.
>>
>>Typically, one would need to use %%eax instead of %eax, or in more generally
>>coded inline assembly %n.
>
>Right.. to let the compiler choose the register.  I was simply giving an
>example.
>
>>
>>For example (rather inefficent) code for
>>
>>  int i, res;
>>
>>  if (i != 0)
>>    res = 1;
>>  else
>>    res = 0;
>>
>>  asm (
>>    "testl %1, %1
>>     jz 1f
>>     movl $1, %0
>>     jmp 2f
>>     1: movl $0, %0
>>     2:"
>>    : "=g" (res)
>>    : "r" (i)
>>    : "cc" /* condition code (flags register) changed */)
>>
>>Regards,
>>Dieter
>
>
>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.

I would have suggested nasm syntax, but that wouldn't get inlined,
unfortunately.

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