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”表示数组每维的元素个数。
c55x 汇编语言指令,[转载]关于TMS320C55x的汇编语言中的.sym伪指令相关推荐
- 8086汇编语言指令总结
根据工作需要,从基础学起,设计一台嵌入式CISC模型计算机,稍后上传. 先总结下,汇编语言指令,如下 1. MOV(传送) 指令写法:MOV target,source 功能描述:将源操作数sour ...
- 8051系列单片机汇编语言指令速查表(汇编语言的111条指
8051系列单片机汇编语言指令速查表(汇编语言的111条指_纳兰容若的左手_新浪博客 http://blog.sina.com.cn/s/blog_6486c0b30100gqew.html 编号 指 ...
- 汇编指令对应的机器码_汇编语言输出“welcome to you!”
基础知识 汇编语言指令组成 汇编指令:机器码的助记符,有对应的机器码. 伪指令:没有对应的机器码,编译器执行,机器不执行. 其他符号:如+-*/有编译器识别,无对应机器码. CPU与外部器件交互需要 ...
- 汇编语言L0C,单片机汇编语言指令查表.doc
单片机汇编语言指令查表 目的操作数汇编指令机器码功能机器周期字节数Amov A ,#data74H datadata传至A12Amov A,directE5H direct direct 传至A12A ...
- PE文件-CPU寄存器-栈-常用汇编语言指令-push-move-sub-lea-rep-xor
文章目录 1.CPU寄存器 2.常用汇编指令 3.作者答疑 如果需要对恶意软件分析,或者修改现有可执行文件的功能,如果有软件的源代码,固然可以比较好的修改,如果没有,通过汇编指令的修改亦可做到.本 ...
- 汇编jnl_汇编语言指令英文全称
汇编语言指令英文全称 汇编指令英文全称 1.通用数据传送指令 MOV----> move MOV dest,src;dest←src MOV指令把一个字节或字的操作数从源地址src传送至目 ...
- mov 指令用c语言写,汇编语言MOV指令:将源操作数复制到目的操作数
MOV 指令将源操作数复制到目的操作数.作为数据传送(data transfer)指令,它几乎用在所有程序中.在它的基本格式中,第一个操作数是目的操作数,第二个操作数是源操作数: MOV destin ...
- Intel汇编语言程序设计学习-第三章 汇编语言基础-中
3.2 例子:整数相加减 现在来看一个进行整数加减操作的汇编语言小程序.寄存器用于存放中间数据,我们调用一个库函数在屏幕上显示寄存器的内容.下面是程序的源码: TITLE Add and Subtr ...
- Intel汇编语言程序设计学习-第三章 汇编语言基础-上
汇编语言基础 3.1 汇编语言的基本元素 有人说汇编难,有人说汇编简单,我个人不做评价,下面是一个简单的实例(部分代码): main PROC mov eax,5 ;5送EAX寄存器 add ...
最新文章
- 水质php202169,基于php的水质查询api调用代码实例
- 深度学习核心技术精讲100篇(四十八)-TB级的日志监控系统很难?带你使用ELK轻松搭建日志监控系统
- FORTRAN学习记录(持续更新)
- Redis系列二:reids介绍
- 列表对象转数组 微信小程序_微信小程序——无限递归的层次列表
- 分离数据库(Detach database).
- Linux7/Redhat7/Centos7 安装Oracle 12C_系统安装_01
- ORA-00304: requested INSTANCE_NUMBER is busy
- Win2003远程桌面报错:RPC错误 解决办法
- mui toast自定义样式
- python seo 外链_百度链接提交-主动推送程序Python版
- [论文总结] 深度学习在农业领域应用论文笔记9
- C语言cat函数的功能,R语言cat()函数
- RadioButton下划线效果的使用
- 苹果xr如何关机_苹果新系统让这些 iPhone 电量满血复活
- 如何区分光猫、路由器和交换机?
- 收集瓶盖赢大奖+石头剪刀布+幸运数字+数苹果
- CCNA(十五)思科ACL、NAT配置命令
- 什么叫超融合基础架构?
- 关于u盘插入电脑在我的电脑中不显示盘符无法正常使用,但是在右下角图标有显示的问题。
热门文章
- 【Spring】Spring boot的ApplicationContextAware 实现获取service
- 【Spring】SpringBoot 如何使用JMX
- Spark Structured : HIve jdbc方式访问待下划线的表,找不到表的错误
- 【Spark】Spark TimeSort 排序
- 【Spark】Spark 3.0 支持 event logs 滚动
- 12-Linux下Oracle 11g R2数据库安装
- linux线程计算,有关Linux进程与线程数目计算的问题
- API接口应该如何设计?
- JDBC连接数据库的8个步骤
- ssm当用户登录成功显示用户名_从零到企业级SSM电商项目实战教程(十八)用户登录功能开发...