Search code examples
assemblyarmneon

What does :constant mean in ARM and what does it mean specifically in VLDn's address register?


I am learning neon and found a line of code as the following:

DATA            .req r0  
vld1.16         {d16, d17, d18, d19}, [DATA, :128]!

I can not find any information about what the :128 means. In RealView Compilation Tools® Version 3.1 Assembler Guide, immediate value in vldn's address register is not defined, even if :128 means #128. What is the difference between :128 and #128? What does :128 mean exactly in this instruction?

Thanks


Solution

  • The assembler syntax for that instruction according to the ARM Architecture Reference Manual is:

    VLD1<c><q>.<size> <list>, [<Rn>{@<align>}]!
    

    So it looks like your :128 means @128 from that context.

    <align> The alignment. It can be one of:

    ...

    128 16-byte alignment, available only if <list> contains two or four registers.