Address of label which is defined within an asm statement?

Ioannis E. Venetis venetis@capsl.udel.edu
Wed Jun 28 22:28:00 GMT 2006


Thank you David and Ian,

Based on your responses I finally figured out what I had to do. It works 
now!

Best regards,

Ioannis


David Fernandez wrote:
> On Wed, 2006-06-28 at 10:45 -0400, Ioannis E. Venetis wrote:
>> Hello Ian,
>>
>> Thanks for answering this. I need to access the address of the label 
>> within the assembly code that I write. This means that I will have to 
>> check again the documentation of this architecture. I hope that I will 
>> find something.
>>
>> Best regards,
>>
>> Ioannis
>>
>>> If you have a label in assembly code, and you want to use it in
>>> assembly code, then you need to write whatever is appropriate for your
>>> assembly language (e.g., "mov #MyLabel,r0").  That is not really a
>>> compiler issue.
>>>
>>> If you have a label in assembly code, and you want to use it in C code
>>> (e.g., by doing "goto MyLabel;"), then, sorry, you can't do that.
>>>
>>> Ian
> 
> To obtain the label address could be somthing like "mov #MyLabel, %<n>"
> or "mov $MyLabel, %<n>" with <n> the output parameter number where you
> get the result like : "=g" (MyLabelAddressVar).
> 
> To call a label from C code can be done using
> 	goto *MyLabelAddressVar
> I think that is a C Extension feature of gcc... You cold also pass the
> value to another assembler block to do the trick, but that would be
> architectural dependent some way...
> 	"jmp *%0"
> 	:
> 	: "r" (MyLabelAddressVar)
> 
> David.
> 



More information about the Gcc-help mailing list