Introduction
The .quad
directive is used to define 64 bit numeric value(s). In similar way
how .byte directive works. In this document, we will do some experiment for
understanding .quad
.
Test code
Create a file a.S
with following content
.globl _start
_start:
mov x0,0xf5
.quad 0x123456789ABCDEF0,2,3
.align 5
mov x0,0xf4
Compile
Now using an arm cross compiler to compile above code
aarch64-linux-gnu-gcc -c a.S
This will generate an object file a.o
pandy@ubuntu:~/temp/asm_test$ file a.o
a.o: ELF 64-bit LSB relocatable, ARM aarch64, version 1 (SYSV), not stripped
Disassemble the code
Let’s check what is the generated code:
pandy@ubuntu:~/temp/asm_test$ aarch64-linux-gnu-objdump -d a.o
a.o: file format elf64-littleaarch64
Disassembly of section .text:
0000000000000000 <_start>:
0: d2801ea0 mov x0, #0xf5 // #245
4: 9abcdef0 .word 0x9abcdef0
8: 12345678 .word 0x12345678
c: 00000002 .word 0x00000002
10: 00000000 .word 0x00000000
14: 00000003 .word 0x00000003
18: 00000000 .word 0x00000000
1c: d503201f nop
20: d2801e80 mov x0, #0xf4 // #244