この章では,前章の説明に従って生成した仮想機械コードを入力とし,現実の計算機アーキテクチャの一つであるARMのアセンブリコードを生成する方法について説明する.説明にあたり,講義「計算機の構成」「計算機アーキテクチャ」で学んだMIPSアーキテクチャに関する知識は仮定する. たとえば:
li $v0, 1
li $v1, 2
add $v0, $v0, $v1
li $v1, 3
mul $v0, $v0, $v1
は,を計算し,その結果をv0
レジスタに格納する命令列であることが理解できるものとする.もし理解できないようであれば,パタヘネ本を読みなおして復習すること.
ちなみに,上記のMIPSアセンブリコードに対応するARMアセンブリコードは次のとおりである.
mov v1, #1
mov v2, #2
add v1, v1, v2
mov v2, #3
mul v1, v1, v2
まずはじめに,ARMのレジスタと命令セットについて概観し,次に,ARMの呼出し規約について説明する.その後,仮想機械コードをARMアセンブリコードに変換する際のいくつかの注意点について説明する.