c55x 汇编语言指令,[转载]关于TMS320C55x的汇编语言中的.sym伪指令

.sym name, value[, type,

storage class, size, tag, dims]

.sym伪指令用来定义一个全局变量、局部变量或一个函数符号。它有若干个参数允许你对这个变量或函数联系不同的调试信息,通常用于实现编译器在汇编语言程序和C/C++语言程序之间进行混合符号调试。如果只是纯粹的汇编语言程序,程序中定义变量的.sym伪指令可以不用写。

.sym伪指令中name和value选项是必须要有的,其它项可选。

一、name选项

name是变量(函数)名,它放置在目标代码的符号表中,name长度最好不要超过32个字符,超过部分系统认为无效。

二、value选项

value是所对应变量的值。任意合法的(绝对或可重定位)表达式都可以。

三、type选项

type与编译前C/C++程序中的变量类型一致。在目标代码的符号表中,第14、15字节定义了对应符号的类型(type

entry),它由一个基本类型和1~6个扩展类型组成:

Type

entry:

____________________________________________________________________________

|扩展类型6|扩展类型5|扩展类型4|扩展类型3|扩展类型2|扩展类型1|基本类型|

长度(位) 2 2 2 2 2 2 4

从上面可以看出,type的值由2个字节来表示,低4位表示基本类型,其余每2位表示一种扩展类型。

基本类型的值和对应的类型表示如下:

0 type not assigned

2 character

3 short integer

4 integer

5 long integer

6 floating point

7 double word

8 structure

9 union

10 enumeration

11 member of an enumeration

12 unsigned character

13 unsigned short integer

扩展类型的值和对应的类型如下:

0 no derived type

1 pointer

2 function

3 array

如果一个含有多个扩展类型的符号的类型值表示为:0000000011010011b,它表示这个符号是一个短整型数组指针。

四、storage classes选项

符号表的第16个字节表明了符号的存储类型,存储类型表示C/C++编译器存取一个符号的方式。下面举几个常用的存储类型和它的值:

0 no storage class

2 external symbol

3 static

5 external definition

6 label

7 undefined label

14 uninitialized

static

104 used only by utility programs

other reserved

五、size选项

size选项表示符号的存储空间大小,以二进制位为单位。

六、tag选项

当变量是一个类型时,tag选项是类型名或结构名。这个名字必须由.stag, .etag,

或者.utag事先已经申明。

七、dims选项

dims选项通常可以由多达4个表达式组成,用于指定由.sym指定的变量的维度。如用C语言定义一个2维数组时,编译后会生成一个.sym伪指令指向此数组,由dims参数指定数组的维数。例如在C/C++程序中有:

int array[5][10];

编译以后得到:

.global _array

.bss _array, 50, 0, 0

.sym _array, _array, 244, 2, 800, , 5, 10

上面一行中有“244”,244=F4H=011110100B,参考“Type entry”的构造,说明_array是一个二维整型数组。跟在“244”后面的“2”表示其存储类型为“external symbol”,表示_array在外部模块中定义。其中的“800”表示800位=16位*5*10,即_array的“size”共800位。其中的“5”和“10”表示数组每维的元素个数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值