Oracle® Developer Studio 12.5: GCC 互換性ガイド

印刷ビューの終了

更新: 2016 年 7 月
 
 

アセンブラの互換性

SPARC アセンブラと x86 アセンブラは、マシンコードの観点や擬似オペランドの観点で動作が大きく異なっています。したがって、GNU アセンブラ (gas) と、Oracle Developer Studio アセンブラおよび Oracle Solaris アセンブラとの間の互換性の問題は、異なるプラットフォームでは違った問題になります。

Oracle Solaris (SPARC および x86) とともに出荷されるアセンブラと、Oracle Developer Studio (SPARC および x86) とともに出荷されるアセンブラを生成するのに同じソースコードが使用されるため、Oracle Developer Studio アセンブラまたは Oracle Solaris アセンブラのいずれかを処理するときは、類似した互換性の問題が想定されます。

x86 アセンブラ

Oracle Developer Studio アセンブラおよび Oracle Solaris アセンブラと、GCC アセンブラとの間で切り替えるときに、x86 アセンブラに関する次の問題に注意してください。

  • gcc は命令コードの接尾辞をしばしば推測できますが、Oracle Developer Studio は、これを明示的に指定することを求めます。明示的に指定すれば、両方を満たすことができます。たとえば、「mov」を「movw」に、「shr」を「shrw」に変更します。

  • #」は、gcc アセンブラファイル内ではコメントを導入していますが、Oracle Developer Studio アセンブラファイル内では前処理ディレクティブを導入することが以前から予期されてきました。

詳細については、x86 アセンブリ言語のリファレンスマニュアルを参照してください

SPARC アセンブラ

正式な SPARC アセンブリ形式は、SPARC アセンブリ言語のリファレンスマニュアルに定義されています。

ELF セクションに関するアセンブラディレクティブ

.section ディレクティブは SPARC アセンブラでは異なる引数を取ります。属性フラグは、GNU アセンブラ (gas) のような文字列の代わりに、明示的なトークンを使用して定義されます。たとえば、gas の場合、.section ディレクティブは次のように表示されます。

.section .init,"aw"

Oracle Developer Studio アセンブラまたは Oracle Solaris SPARC アセンブラを使用すると、ディレクティブは次のように表示されます。

.section ".init",#alloc,#write

注 -  SPARC アセンブラは .pushsection ディレクティブと .popsection ディレクティブをサポートしますが、.previous ディレクティブはサポートしません。

擬似オペランドの問題

.symver 擬似オペランドは、GNU 互換性のために SPARC アセンブラでサポートされています。

.uleb128 および .sleb128 の擬似オペランドはサポートされています。

SPARC アセンブラのリソース

詳細は、次のリソースを参照してください。