代入とassembler

c

#include <stdio.h>
// mainブロック
int main(void) {

    int age;
    age = 20;
    printf("私は%d歳です\n", age);
    return 0;
}

assembler

|main|  PROC
|$LN3|
        stp         fp,lr,[sp,#-0x20]!
        mov         fp,sp
        mov         w8,#0x14
        str         w8,[sp,#0x10]
        ldr         w1,[sp,#0x10]
        adrp        x8,|$SG4981|
        add         x0,x8,|$SG4981|
        bl          printf
        mov         w0,#0
        ldp         fp,lr,[sp],#0x20
        ret

str
ストア命令 (STR) はレジスタに格納されている値をメモリに書き込み

ageをdoubleにするとこうなる
ラベルでldrしている

|$LN4|
        stp         fp,lr,[sp,#-0x20]!
        mov         fp,sp
        ldr         d16,|$LN3@main|
        str         d16,[sp,#0x10]
        ldr         x1,[sp,#0x10]
        adrp        x8,|$SG4981|
        add         x0,x8,|$SG4981|
        bl          printf
        mov         w0,#0
        ldp         fp,lr,[sp],#0x20
        ret
        nop
|$LN3@main|
        DCFD         20.5

DCFD and DCFDU: The DCFD directive allocates memory for word-aligned double-precision floating-point numbers, and defines the initial runtime contents of the memory. DCFDU is the same, except that the memory alignment is arbitrary.
https://developer.arm.com/documentation/dui0801/l/Directives-Reference

型によってassemblerのオペランドが異なっていることがわかる