What is the difference between =label (equals sign) and [label] (brackets) in ARMv6 assembly?

ldr r0,=something … something: means load the address of the label something into the register r0. The assembler then adds a word somewhere in reach of the ldr instruction and replaces it with a ldr r0,[pc,#offset] instruction So this shortcut ldr r0,=0x12345678 means load 0x12345678 into r0. being mostly fixed length instructions, you cant load … Read more

What is the difference between FIQ and IRQ interrupt system?

ARM calls FIQ the fast interrupt, with the implication that IRQ is normal priority. In any real system, there will be many more sources of interrupts than just two devices and there will therefore be some external hardware interrupt controller which allows masking, prioritization etc. of these multiple sources and which drives the interrupt request … Read more

Can _start be the thumb function?

Can _start be a thumb function (in a Linux user program)? Yes it can. The steps are not as simple as you may believe. Please use the .code 16 as described by others. Also look at ARM Script predicate; my answer shows how to detect a thumb binary. The entry symbol must have the traditional … Read more