[LLVMdev] ARM assembler's syntax in clang

Bernie Ogden bogden at arm.com
Wed Mar 6 07:59:21 PST 2013


Hi Ashi,

 

Your first LDR is a pseudoinstruction that is supported by some tools (gas and armasm, at least), but not by LLVM. Roughly speaking, it turns into a PC-relative load from a literal pool.

 

To do what you're trying to achieve you can write your own literal pool in your assembly. You can see some examples of this sort of thing at https://github.com/tianocore/edk2/blob/master/ArmPkg/Include/AsmMacroIoLib.h.

 

Regards,

 

Bernie

 

 

From: llvmdev-bounces at cs.uiuc.edu [mailto:llvmdev-bounces at cs.uiuc.edu] On Behalf Of Ashi
Sent: 05 March 2013 04:27
To: Renato Golin
Cc: LLVM List
Subject: Re: [LLVMdev] ARM assembler's syntax in clang

 

Hi, all. The previous post have a typo:

problem in ARM assembly: I use LDR to load an external symbol :

LDR         R7,=DataTable

But clang gives error: unexpected token in operand to the '=', 
Then I change the code to:

LDR         R7,DataTable

The error becomes: unsupported relocation on symbol. How can I get around this in clang? My problem is actually how to load external symbol in Clang's integrated-as? I've tried to learn some trivial c code's assembly output, but find there are many linker related symbol and really confusing.

Thanks in advance!



 

On Mon, Mar 4, 2013 at 4:48 PM, Ashi <ashi08104 at gmail.com> wrote:

Hi, all. Another problem in ARM assembly: I use LDR to load an external symbol :

LDR         R7,=DataTable

But clang gives error: unexpected token in operand to the '=', 
Then I change the code to:

LDR         R7,=DataTable

The error becomes: unsupported relocation on symbol. How can I get around this in clang? 

Thanks in advance!

 

On Mon, Feb 25, 2013 at 7:14 PM, Ashi <ashi08104 at gmail.com> wrote:

Hi,all,
I've some problem when using clang compile my ARM assembly code:

1 .qn directive
In GAS, .qn directive is used to create typed and/or indexed register aliases for use in Advanced SIMD Extension (Neon) instructions.(http://sourceware.org/binutils/docs/as/ARM-Directives.html#ARM-Directives)
But clang's integrated-as seems have different syntax, for example, my code:

input .qn Q6.F32 

Clang would give error: unexpected token in argument list

2 .unreq
Clang doesn't recognize .unreq,  my code is as below:

px .req r0
.unreq px
px .req r1

clang give error: redefinition of 'px' does not match original.

3 .end
clang also doesn't recognize .end directive

all my code is compiled by: clang -arch armv7 -v -integrated-as -g -mcpu=cortex-a9 -mfpu=neon -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk/

my clang version is: Apple LLVM version 4.2 (clang-425.0.24) (based on LLVM 3.2svn)

BTW, could any tell me which files implement integrated-as in clang source code, I think it may also help me by looking the source code(I've tried 'grep', but with no success.)

Great Thanks!

ashi

ashi

 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20130306/9e157370/attachment.html>


More information about the llvm-dev mailing list