コンテンツにスキップ

リロケータブルアセンブラ

出典: フリー百科事典『ウィキペディア(Wikipedia)』

リロケータブルアセンブラ(Relocatable Assembler)は、アセンブラで記述されたプログラムがメモリ上のどの位置に配置されても実行が可能な形でアセンブルされる。OSによっては、OS自身がオブジェクトコードを自動再配置するが(OS-9)通常はリンカと呼ばれるオブジェクト編纂プログラムによって再配置される。

アブソリュートアセンブラ(ジャンプ命令のアドレスを絶対値で指定するため絶対値アセンブラと呼ばれる)の上位版にあたり、ジャンプ先を現在のアドレスから前後何バイト目というような相対的に指定する方式をサポートするアセンブラである。相対ジャンプ命令のオフセットアドレスを生成し、リンカを使用する時に、メモリ上の配置場所を自由に指定できるようになるため、モジュール化したときや複数の開発言語にわたる開発の場合に有効な手段でとなる。(アブソリュートアセンブラでアドレスを固定的に指定すると、モジュール間でダブったアドレス空間があった場合に、回避するためには非常に手間がかかる。)

CP/M(-80)の場合アブソリュートアセンブラはASM(CP/M付属のアセンブラ)、MAC(アブソリュートマクロアセンブラ)が有名であり、 リロケータブルアセンブラとしてはRMAC(リロケータブルマクロアセンブラ)(以上デジタルリサーチ製品)、MACRO-80(マイクロソフト製品)が有名である。

アセンブリ言語を使う分野においては、現在アブソリュートアセンブラよりも使い勝手の良いリロケータブルアセンブラが優勢であるが、Cコンパイラのインラインコンパイラに押されているためか、単体のアセンブラはあまり見かけなくなった。また組み込みマイコン分野に於いても可読性・メインテナンス性の点からアセンブラではなくC/C++言語が主流になっている為アセンブラの出番はスタートアップルーチンの記述や厳密なクロック数が必要な場合以外無くなっている。