リテラルプールとは、コードセクション内の定数データの領域のことです。
0xdeadbeef
をリテラルプール(***
でマーク)からロードするコードを生成します。int f(void) { return 0xdeadbeef; } ** Section #1 '.text' (SHT_PROGBITS) [SHF_ALLOC + SHF_EXECINSTR] Size : 12 bytes (alignment 4) Address: 0x00000000 $a .text f 0x00000000: e59f0000 ....LDR r0,[pc,#0] ; [0x8] = 0xdeadbeef 0x00000004: e12fff1e ../.BX lr $d 0x00000008: deadbeef ....DCD 3735928559 ***
MOVW
/MOVT
の命令ペアでレジスタに定数を生成することができます。** Section #1 '.text' (SHT_PROGBITS) [SHF_ALLOC + SHF_EXECINSTR] Size : 12 bytes (alignment 4) Address: 0x00000000 $a .text f 0x00000000: e30b0eef ....MOV r0,#0xbeef 0x00000004: e34d0ead ..M.MOVT r0,#0xdead 0x00000008: e12fff1e ../.BX lr
--integer_literal_pools
--string_literal_pools
--branch_tables
--float_literal_pools