SPARC 和 x86 汇编程序在计算机代码和伪操作方面存在很大不同。因此,GNU 汇编程序 (gas) 和 Oracle Developer Studio 与 Oracle Solaris 汇编程序之间的兼容性问题在不同平台上也是不同的。
用来生成 Oracle Solaris(SPARC 和 x86)附带的汇编程序和 Oracle Developer Studio(SPARC 和 x86)附带的汇编程序的源代码都是相同的,因此使用 Oracle Developer Studio 或 Oracle Solaris 汇编程序时,您预计会遇到类似的兼容性问题。
在 Oracle Developer Studio 和 Oracle Solaris 汇编程序和 GCC 汇编程序之间切换时,请注意以下 x86 汇编程序问题。
gcc 通常可以推断出操作代码后缀,而 Oracle Developer Studio 则要求显式提供操作代码后缀。提供更明确的操作代码后缀可同时满足两者的要求。例如,将 "mov" 更改为 "movw" 以及将 "shr" 更改为 "shrw"。
'#' 可在 gcc 汇编程序文件中引入注释,但它以往也曾用来在 Oracle Developer Studio 汇编程序文件中引入预处理指令。
有关详细信息,请参见《x86 Assembly Language Reference Manual》(《x86 汇编语言参考手册》)
官方 SPARC 汇编格式在《SPARC Assembly Reference Language Manual》(《SPARC 汇编参考语言手册》)中进行了定义。
在 SPARC 汇编程序中,.section 指令使用的参数有所不同。与 GNU 汇编程序 (gas) 一样,属性标志是使用显式标记而不是使用字符串定义的。例如,使用 gas 时,.section 指令如下所示:
.section .init,"aw"
使用 Oracle Developer Studio 或 Oracle Solaris SPARC 汇编程序时,指令如下所示:
.section ".init",#alloc,#write
为确保 GNU 兼容性,SPARC 汇编程序中支持 .symver 伪操作。
.uleb128 和 .sleb128 伪操作都支持使用。
有关详细信息,请参见以下资源: