Hexagon Binutils GNU 手册(10)

240 篇文章 11 订阅

2.6 Directives(续2.6.59)

2.6.60 .short

.short [expr [,expr]...]

将指定的表达式生成为存储在连续地址中的16位数字。接受由逗号分隔的零个或多个表达式。
注意.short等同于.hword(第2.6.34节)。

2.6.61 .single

.single [flonum [,flonum]...]

生成指定的flonums(第2.3.6节)作为32位浮点数存储在
连续的地址中。
接受由逗号分隔的零个或多个flonums。
注意.single等同于.float(2.6.30节)。

2.6.62 .size

.size symbol, expr

设置符号的大小为expr。符号的大小用字节表示。
表达式(但可以包括标签运算)。
注意 这条指令通常用于设置函数符号的大小。

2.6.63 .sleb128

.sleb128 expr [,expr]...

生成指定的表达式作为 sleb128 格式的数字存储在连续的
地址。
接受一个或多个用逗号分隔的表达式。
注意 sleb128代表 “有符号的小-endian基128”。这是由DWARF符号调试格式使用的紧凑的、可变长度的数字表示。

2.6.64 .skip

.skip size, fill

在连续的地址中生成大小字节,每个字节的值为fill。
size和fill都是绝对表达式。如果省略了逗号和fill,则假定fill为零。
注意.skip等同于.space(第2.6.65节)。

2.6.65 .space

.space size, fill 
.block size, fill

在连续的地址中生成大小字节,每个字节的值为fill。
size和fill都是绝对表达式。如果省略了逗号和fill,则fill被假定为
假设为零。
注意 .space等同于.skip(第2.6.64节)。

2.6.66 .stab

.stabd type, other, desc
.stabn type, other, desc, value
.stabs string, type, other, desc, value

生成符号(见第2.5节)供符号调试器使用。这些符号不会被输入到汇编器的哈希表中:它们不能被源文件中的其他地方所引用。根据指令的变体,最多需要五个字:
string
符号名称。它可以包含除000以外的任何字符,因此比普通的符号名更通用。
type
绝对表达式。符号类型被设置为该表达式的低8位。任何比特模式都是允许的,但链接器和调试器可能不接受非标准的比特模式。
other
绝对表达式。符号的 "其他 "属性被设置为该表达式的低8位。
desc
绝对表达式。符号的描述符被设置为该表达式的低16位。
value
绝对表达式,成为符号的值。
如果在读取.stabd、.stabn或.stabs语句时检测到一个警告,那么这个符号可能已经被创建了;你在对象文件中得到一个半成品的符号。这与早期的汇编程序是兼容的!

.stabd type , other , desc

生成的符号的 "名称 "甚至不是一个空字符串。它是一个空指针,是为了兼容。旧的汇编程序使用空指针,这样他们就不会用空字符串浪费对象文件中的空间。符号的值被设置为位置计数器,可重定位的。当你的程序被链接时,这个符号的值是.stabd被装配时位置计数器的地址。

.stabn type , other , desc , value

符号的名称被设置为空字符串""。

.stabs string , type , other , desc , value

所有五个字段都被指定。

2.6.67 .string

.string "string" [,"string"]...

生成指定的字符串字元(带自动尾部零字节)作为字符数据
存储在连续的字节地址中。
接受一个或多个用逗号隔开的字符串字元(2.3.7节)。
字符串可以包含第2.3.7节中描述的任何转义序列。

2.6.68 .string8

.string8 "string" [,"string"]...

生成指定的字符串字元(带自动尾部零字节)作为字符数据
存储在连续的字节地址中。
接受一个或多个用逗号隔开的字符串字元(2.3.7节)。
字符串可以包含第2.3.7节中描述的任何转义序列。

2.6.69 .string16

.string16 "string" [,"string"]...

生成指定的字符串字元(带有自动尾随的零字节)作为字符数据,每个字符值扩展到16位并存储在连续的半字地址中。
接受一个或多个字符串字元(第2.3.7节),用逗号分隔。
字符串可以包含第2.3.7节中描述的任何转义序列。
例如,将

.string16 "BABE"

相当于组装了

.string "B\0A\0B\0E\0"

2.6.70 .string32

.string32 "string" [,"string"]...

生成指定的字符串字元(带有自动尾随的零字节)作为字符数据。
每个字符值扩展到32位并存储在连续的字地址中。接受一个或多个字符串字元(第2.3.7节),用逗号分隔。
字符串可以包含第2.3.7节中描述的任何转义序列。

2.6.71 .string64

.string64 "string" [,"string"]...

生成指定的字符串字元(带有自动尾随的零字节)作为字符数据,每个字符值扩展到64位并存储在连续的双字地址中。
接受一个或多个字符串字元(第2.3.7节),用逗号分隔。
字符串可以包含第2.3.7节中描述的任何转义序列。

2.6.72 .symver

.symver name, name2@nodename 
.symver name, name2@@nodename 
.symver name, name2@@@nodename

.symver指令有三种变化。都是将符号绑定到源文件中的特定版本节点上(第3.3.12节)。这通常是在组装要链接到共享对象的文件时进行的。
注意 在一些情况下,为了覆盖共享对象中的版本符号,在要绑定到应用程序本身的对象中使用这个指令也是有意义的。

.symver name, name2@nodename

如果指定的符号名称在被装配的文件中被定义,这条指令
有效地创建了一个符号别名,名称为 “name2@nodename”。
在这种情况下,name作为一个方便的名称,使得在一个源文件中拥有多个版本的函数定义成为可能,并使编译器能够确定哪个版本的函数正在被引用。
name2是符号在外部被引用的名称。
nodename指定在构建共享库时提供给链接器的版本脚本中的一个节点的名称。(如果你从一个共享对象中覆盖一个版本符号,那么nodename应该对应于你试图覆盖的符号的节点名称。)
如果指定的符号名称没有在被装配的文件中定义,该指令将所有对名称的引用改为 “name2@nodename”。
80-N2040-1 Rev. J
注意
使用.symver而不是普通的符号别名的主要原因是@字符在符号名称中是无效的。

如果没有对name的引用,"name2@nodename "将从符号表中删除。

.symver name, name2@@nodename

.symver的双@版本表示符号名必须存在,并在被组装的源文件中定义。双@版本在功能上等同于单@版本,除了 "name2@@nodename "也被链接器用来解析对name2的引用。

.symver name, name2@@@nodename

三重@版本规定,当名字没有在被装配的文件中定义时,它将被视为 “name2@nodename”。当名字在文件中被定义时,它将被改变为 “name2@@nodename”。

2.6.73 .text

.text subsection

将以下语句组合到文本末尾编号为subsection的小节上,这是一个绝对表达式。如果省略分节,则使用第0分节编号。

2.6.74 .title

.title ["string"]

在一个汇编列表文件上设置页眉标题(第2.2.5节)。如果没有指定这条指令(或者如果指定了,但省略了字符串参数),页眉标题行被设置为空白。
这条指令通常将标题设置在将要生成的下一页;但是,如果它出现在页面顶部的10行之内,它将设置当前页面的标题。
注意 如果在一个页面上出现多个.title指令,第一个会影响当前页,最后一个会影响下一页。在这之间的任何其他实例都会被忽略。

2.6.75 .type

.type symbol, type

将符号的类型设为type。符号可以是一个函数符号,也可以是一个对象
符号。
类型参数可以包含以下常数之一:
*** @function***
符号是函数名称。

@object
符号是数据对象。
@gnu_indirect_function
符号是间接函数名。
当在重定位处理过程中进行评估时,具有这种类型的符号被调用,而不是作为值使用。
@tls_object
符号是线程本地的数据对象
@common
符号是普通数据对象。
*** @notype***
符号没有类型。
@gnu_unique_object
符号在进程中是全局唯一的。
动态链接器会验证这种类型的符号的唯一性。

2.6.76 .uleb128

.uleb128 expr [,expr]...

将指定的表达式生成为存储在连续地址中的uleb128格式的数字。
地址。
接受一个或多个用逗号分隔的表达式。
注意 uleb128代表 “无符号小-endian基128”。这是DWARF符号调试格式使用的一种紧凑的、可变长度的数字表示。

2.6.77 .word

.word [expr [,expr]...]

将指定的表达式生成为存储在连续地址中的32位数据项。接受由逗号分隔的零个或多个表达式。
注意 .word等同于.int(2.6.37节)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值