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 Assembly Language Reference Manual》(《x86 汇编语言参考手册》)

SPARC 汇编程序

官方 SPARC 汇编格式在《SPARC Assembly Reference Language Manual》(《SPARC 汇编参考语言手册》)中进行了定义。

与 ELF 部分有关的汇编语言指令

在 SPARC 汇编程序中,.section 指令使用的参数有所不同。与 GNU 汇编程序 (gas) 一样,属性标志是使用显式标记而不是使用字符串定义的。例如,使用 gas 时,.section 指令如下所示:

.section .init,"aw"

使用 Oracle Developer Studio 或 Oracle Solaris SPARC 汇编程序时,指令如下所示:

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

注 -  SPARC 汇编程序支持 .pushsection.popsection 指令,但不支持 .previous 指令。

伪操作问题

为确保 GNU 兼容性,SPARC 汇编程序中支持 .symver 伪操作。

.uleb128.sleb128 伪操作都支持使用。

SPARC 汇编程序资源

有关详细信息,请参见以下资源: