c55x汇编语言,TMS320C55x汇编语言编程

本文详细介绍了C55x汇编语言中关于段的处理,包括未初始化段(.bss, .usect)、初始化段(.text, .data, .sect)和自定义段的创建。汇编器通过段伪指令自动识别并组织代码和数据,链接器则负责将段分配到存储器中,处理包括MEMORY和SECTIONS伪指令的存储器映射。此外,讨论了C55x链接器的功能,如地址重定位和程序的重新定位策略。" 107462942,3039001,LeetCode无重复字符最长子串解题策略,"['字符串处理', '算法', '滑动窗口', 'LeetCode题目', '动态规划']
摘要由CSDN通过智能技术生成

一些汇编伪指令可将代码和数据的各个部分与相应的段相联系,可以更有效地利用存储器,用户可以将任何段放到存储器的任何存储块上

2. 汇编器对段的处理

汇编器通过段伪指令自动识别各个段,并将段名相同的语句汇编在一起

汇编器有5条伪指令可以识别汇编语言程序的各个不同段    .text、.data、.sect创建初始化段

.bss和.usect创建未初始化段

.sect与.usect创建自定义段和子段

2.1 未初始化段

未初始化段占用处理器存储空间,常常分配到RAM

未初始化段在目标文件里没有实际内容,仅仅用于保留存储空间,当程序在运行时用这些空间来创建和存储变量

汇编命令.bss和.usect用来创建未初始化数据区域

.bss symbol, size [,[blocking flag][,alignment flag]]

symbol .usect  “section name”, size [,[blocking flag][,alignment flag]]

symbol:指向.bss指令创建的段的第一个字,对应该存储空间的变量名。可被其他段引用,被声明为一个全局符号

size:为对应段开辟的存储空间大小,单位为字

blocking flag:可选参数。如果赋予一个非零值给该参数,汇编器会连续分配字节空间,这些区域不会超出一页边界,除非该段大于一页。

alignment flag: 可选参数。如果赋予一个非零值给该参数,该段会在一个长字边界开始

section name:段名

2.2 .初始化段

初始化段包含可执行代码或者初始化数据;当程序被装载时,它们就被放到处理器存储空间里

每个初始化段独立分配空间,可以引用在其他段定义的标识(symbol),链接器自动处理这些段间引用

定义初始化段的指令:

.text

.data

.sect ”section name”[,value] value表示段指针SPC的初值,默认为0

2.3 自定义段

usect 创建像.bss段那样的段,这些段为变量在RAM开辟存储空间。

.sect创建像.text和.data段那样包含代码和数据的段,可以创建可重分配地址的自定义段。

用户可以创建多达32767个自定义段,段名多至200个字符。

每次使用这两个指令可以用不同的section name来创建不同的段,如果用一个已经使用的section name,那么汇编器将代码和数据都汇编到同一个段。

2.4 子段

子段是更大的段中的较小的段,链接器可以像段一样操作它

子段让用户可以更好的控制存储器映射

可以使用.sect或者.usect指令

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值