.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”表示数组每维的元素个数。

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

  1. 8086汇编语言指令总结

    根据工作需要,从基础学起,设计一台嵌入式CISC模型计算机,稍后上传. 先总结下,汇编语言指令,如下 1. MOV(传送) 指令写法:MOV  target,source 功能描述:将源操作数sour ...

  2. 8051系列单片机汇编语言指令速查表(汇编语言的111条指

    8051系列单片机汇编语言指令速查表(汇编语言的111条指_纳兰容若的左手_新浪博客 http://blog.sina.com.cn/s/blog_6486c0b30100gqew.html 编号 指 ...

  3. 汇编指令对应的机器码_汇编语言输出“welcome to you!”

    基础知识 汇编语言指令组成 汇编指令:机器码的助记符,有对应的机器码. 伪指令:没有对应的机器码,编译器执行,机器不执行. 其他符号:如+-*/有编译器识别,无对应机器码. CPU与外部器件交互需要 ...

  4. 汇编语言L0C,单片机汇编语言指令查表.doc

    单片机汇编语言指令查表 目的操作数汇编指令机器码功能机器周期字节数Amov A ,#data74H datadata传至A12Amov A,directE5H direct direct 传至A12A ...

  5. PE文件-CPU寄存器-栈-常用汇编语言指令-push-move-sub-lea-rep-xor

    文章目录 1.CPU寄存器 2.常用汇编指令 3.作者答疑   如果需要对恶意软件分析,或者修改现有可执行文件的功能,如果有软件的源代码,固然可以比较好的修改,如果没有,通过汇编指令的修改亦可做到.本 ...

  6. 汇编jnl_汇编语言指令英文全称

    汇编语言指令英文全称 汇编指令英文全称 1.通用数据传送指令 MOV----&gt move MOV dest,src;dest←src MOV指令把一个字节或字的操作数从源地址src传送至目 ...

  7. mov 指令用c语言写,汇编语言MOV指令:将源操作数复制到目的操作数

    MOV 指令将源操作数复制到目的操作数.作为数据传送(data transfer)指令,它几乎用在所有程序中.在它的基本格式中,第一个操作数是目的操作数,第二个操作数是源操作数: MOV destin ...

  8. Intel汇编语言程序设计学习-第三章 汇编语言基础-中

    3.2  例子:整数相加减 现在来看一个进行整数加减操作的汇编语言小程序.寄存器用于存放中间数据,我们调用一个库函数在屏幕上显示寄存器的内容.下面是程序的源码: TITLE Add and Subtr ...

  9. Intel汇编语言程序设计学习-第三章 汇编语言基础-上

    汇编语言基础 3.1  汇编语言的基本元素 有人说汇编难,有人说汇编简单,我个人不做评价,下面是一个简单的实例(部分代码): main PROC mov  eax,5  ;5送EAX寄存器 add   ...

最新文章

  1. 水质php202169,基于php的水质查询api调用代码实例
  2. 深度学习核心技术精讲100篇(四十八)-TB级的日志监控系统很难?带你使用ELK轻松搭建日志监控系统
  3. FORTRAN学习记录(持续更新)
  4. Redis系列二:reids介绍
  5. 列表对象转数组 微信小程序_微信小程序——无限递归的层次列表
  6. 分离数据库(Detach database).
  7. Linux7/Redhat7/Centos7 安装Oracle 12C_系统安装_01
  8. ORA-00304: requested INSTANCE_NUMBER is busy
  9. Win2003远程桌面报错:RPC错误 解决办法
  10. mui toast自定义样式
  11. python seo 外链_百度链接提交-主动推送程序Python版
  12. [论文总结] 深度学习在农业领域应用论文笔记9
  13. C语言cat函数的功能,R语言cat()函数
  14. RadioButton下划线效果的使用
  15. 苹果xr如何关机_苹果新系统让这些 iPhone 电量满血复活
  16. 如何区分光猫、路由器和交换机?
  17. 收集瓶盖赢大奖+石头剪刀布+幸运数字+数苹果
  18. CCNA(十五)思科ACL、NAT配置命令
  19. 什么叫超融合基础架构?
  20. 关于u盘插入电脑在我的电脑中不显示盘符无法正常使用,但是在右下角图标有显示的问题。

热门文章

  1. 【Spring】Spring boot的ApplicationContextAware 实现获取service
  2. 【Spring】SpringBoot 如何使用JMX
  3. Spark Structured : HIve jdbc方式访问待下划线的表,找不到表的错误
  4. 【Spark】Spark TimeSort 排序
  5. 【Spark】Spark 3.0 支持 event logs 滚动
  6. 12-Linux下Oracle 11g R2数据库安装
  7. linux线程计算,有关Linux进程与线程数目计算的问题
  8. API接口应该如何设计?
  9. JDBC连接数据库的8个步骤
  10. ssm当用户登录成功显示用户名_从零到企业级SSM电商项目实战教程(十八)用户登录功能开发...