This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

What difference are two kinds of labels of compiler for ARM A8 core?

Hi,

When I check compiler generated assembly code, I find that there are two kinds of labels. One kind begins with a '$' sign. This is a normal case. The other begins with a vertical bar '|', which is rather weird to me. In fact, it has two vertical bars outside a '$' prefix label.

The CPU is ARM Cortex A8, while the compiler is:

"C:/ti/ccsv6/tools/compiler/ti-cgt-arm_5.2.4 ...

It is under Windows 7, OS.

Could you tell me why a label begins with '||"?

Thanks,

||$C$L21||:
; .dwpsn file "../hello2d.c",line 319,column 1,is_stmt,isa 1

$C$DW$73 .dwtag  DW_TAG_TI_branch

  • The ||xyz|| operator instructs the assembler to take "xyz" as a user-defined symbol. This is used in case "xyz" just so happens to be the same as a built-in assembler operator or identifier like "NOP". In this case, $C$L21 is not actually an assembler built-in, but the compiler is just being cautious; it does not affect the object code generated for this example.