リテラルプール
読み:リテラルプール
外語:literal pool
直定数(リテラル)が集められる場所。
概要
ほとんどのRISCは命令語長が固定長で、大きな値をイミディエイト(即値)にできない。
オペコードの表現に必要なビット数を考えれば、たとえば16ビットの即値代入命令を16ビット固定長命令として表現できないことは明らかである。
そこでこのような大きな直定数(リテラル)は、そのサブルーチンの直前か直後にまとめて配置する。これがリテラルプールで、即値代入命令はPC相対でその値をロードすることになる。
特徴
例えばARMの場合、手作業で書くときは次のようになる。
LDR r0, [pc, #オフセット]
ARMのアセンブラーは、次のように書くことでlabelを自動的にリテラルプールに置き、命令をPC相対ロードに置き換える。
LDR r0, =label
レジスターはr0以外でもよい。
再検索