c语言dsp编程论坛,针对Ti的DSP C语言编程
在C和汇编混合编程的时候,存在C语言和汇编语言
的变量以及函数的接口问题。
在C程序中定义的变量,编译为.asm文件后,都被
放进了.bss区,而且变量名的前面都带了一个下划
线。在C程序中定义的函数,编译后在函数名前也
带了一个下划线。例如:
extern int num就会变成 .bss _num, 1
extern float nums[5]就会变成.bss _nums, 5
extern void func ( )就会变成 _func,
一 汇编和C的相互调用可以分以下几种情况:
(1) 汇编程序中访问c程序中的变量和函数。
在汇编程序中,用_XX就可以访问C中的变量XX了。
访问数组时,可以用_XX+偏移量来访问,如_XX+3
访问了数组中的XX[3]。
在汇编程序调用C函数时,如果没有参数传递,直
接用_funcname 就可以了。如果有参数传递,则函
数中最左边的一个参数由寄存器A给出,其他的参
数按顺序由堆栈给出。返回值是返回到A寄存器或
者由A寄存器给出的地址。同时注意,为了能够让
汇编语言能访问到C语言中定义的变量和函数,他
们必须声明为外部变量,即加extern 前缀。
(2) c程序中访问汇编程序中的变量
如果需要在c程序中访问汇编程序中的变量,则汇
编程序中的变量名必须以下划线为首字符,并用
global使之成为全局变量。
如果需要在c程序中调用汇编程序中的过程,则过程
名必须以下划线为首字符,并且,要根据c程序编译
时使用的模式是stack-based model还是register
argument model来正确地编写该过程,使之能正确
地取得调用参数。
(3) 在线汇编
在C程序中直接插入 asm(“\t*** ”),内嵌汇编语
句,需要注意的是这种用法要慎用,在线汇编提供
了能直接读写硬件的能力,如读写中断控制允许寄
存器等,但编译器并不检查和分析在线汇编语言,
插入在线汇编语言改变汇编环境或可能改变C变量
的值可能导致严重的错误。
二 汇编和C接口中寻址方式的改变:
需要注意的是,在C语言中,对于局部变量的建立
和访问,是通过堆栈实现的,它的寻址是通过堆栈
寄存器SP实现的。而在汇编语言中,为了使程序代
码变得更为精简,TI在直接寻址方式中,地址的低
7位直接包含在指令中,这低7位所能寻址的具体位
置可由DP寄存器或SP寄存器决定。具体实现可通过
设置ST1寄存器的CPL位实现,CPL=0,DP寻址,
CPL=1,SP寻址。在DP寻址的时候,由DP提供高9位
地址,与低7位组成16位地址;在SP寻址的时候,
16位地址是由SP(16位)与低7位直接相加得来。
由于在C语言的环境下,局部变量的寻址必须通过
SP寄存器实现,在混合编程的时候,为了使汇编语
言不影响堆栈寄存器SP,通常的方式是在汇编环境
中使用DP方式寻址,这样可以使二者互不干扰。编
程中只要注意对CPL位正确设置即可。
c语言dsp编程论坛,针对Ti的DSP C语言编程相关推荐
- TI基于DSP+ARM的双核架构如何相互通信
1 通信结构简介 针对当前应用的复杂性,SOC芯片更好能能满足应用和媒体的需求,集成众多接口,用ARM做为应用处理器进行多样化的应用开发和用户界面和接口,利用DSP进行算法加速,特别是媒体的编解码算法 ...
- [DSP 日常记录] #2 TI DSP 的简单介绍与 DSP 的一些名词解释
将原先自己别处写的两篇博文汇总在这里 [内容仅针对 TI 公司生产的 DSP] TI公司的主要处理器产品列表 参考:TI.WIKI 一.MCUs 微处理器 16-bit 超低功耗处理器 -- MSP4 ...
- 不同语言编程能整合到一起吗_学习编程入门指南
每天都看到很多对编程感兴趣的人在问是不是可以自学软件开发,或者应该怎么自学编程才能入门.在这篇文章里,我将尝试重现一个初学者在学习计算机编程时可能会碰到的问题,并尽量提供相应的解决思路,希望对初学者有 ...
- go语言打印日期_基于 Go 语言开发在线论坛(八):消息、视图及日期时间本地化...
我们接着上篇在线论坛的进度,由于之前所有页面和消息文本都是英文的,而我们开发的应用基本都是面向中文用户的,所以需要对项目进行本地化,今天正好借着这个入门项目给大家介绍下如何在 Go Web 应用中进行 ...
- 有没有c 或c语言的短期培训学校,根河学c语言编程,根河学c语言编程的学校,根河学c语言编程报个培训班怎么样...
根河学c语言编程,根河学c语言编程的学校,根河学c语言编程报个培训班怎么样 首页 > 软件 > 根河学c语言编程 作者:镀金池 发布时间:2017-11-30 11:02 另外,尽早调 ...
- 实战项目!用PHP实现的编程论坛网站
微信公众号:Java随笔录 关注可了解更多Java相关的技术分享.问题或建议,欢迎公众号留言! 文章目录 一.系统需求分析 1. 系统描述 2. 需求分析和应用程序功能 3. 系统常做的查询与更新 4 ...
- 沈阳工业大学c语言编程题,金融工程专业《C语言程序设计》启发式教学探讨
一.引言 C语言是一门高级程序设计语言,掌握C语言不仅有利于提高学生的思维能力,而且有利于培养学生的编程能力,对学习其他计算机语言课程具有很大的帮助.因此,<C语言程序设计>既是计算机各类 ...
- 基于c语言编程思路的实践与探索,C语言程序设计趣味教学探索与实践
张竞丹 王乐 江武汉 范金坪 管明祥 摘要:"C语言程序设计"是高等职业教育中计算机.电子专业的专业基础课程,在其专业课程体系中具有重要的作用.文章针对高职院校"C语言程 ...
- 自动化学计算机语言先学什么,要入门PLC编程 先搞清这5种专用语言
原标题:要入门PLC编程 先搞清这5种专用语言 PLC,(Programmable Logic Controller),乃是一种电子装置,早期称为顺序控制器"Sequence Control ...
- Computer:少儿编程—每个人都应该学习编程,它能教你如何思考—编程入门的简介(编程语言的特点种类开发工具对比人类语言)、编程应用、编程意义之详细攻略
Computer:少儿编程-每个人都应该学习编程,它能教你如何思考-编程入门的简介(编程语言的特点&种类&开发工具&对比人类语言).编程应用.编程意义之详细攻略 导读:乔布斯说 ...
最新文章
- 三层架构的原理及实现
- 圈子 | 精彩预告:P2P金融那些事儿
- LRU算法四种实现方式介绍
- Android打电话功能权限报错,从打电话权限报错看Android6.0权限变化
- linux服务器 版本 比例,Linux比例近半 服务器操作系统混战开始
- python软件下载安装百度网盘-Python自动化测试视频教程【百度云盘下载】
- 读取Excel文件的版本
- 快手视频大量下载无水印软件 怎样从快手下载无水印软件 说说如何在快手批量下载高清不含水印...
- ADS仿真4_滤波器设计
- 常见的web前端编程软件
- 偏微分方程数值解主要步骤
- liteide+g:Goland多版本管理
- 16代表啥_16代表的爱情恋爱含义16代表什么爱情含义
- git memery 后 push到远程,如何回滚
- 无人驾驶失败案例汇总
- Linux常用命令|徐奥雯编辑整理|XUAOWEN
- win10配置计算机时强制关机,老鸟讲解Win10设置远程系统强制关机的详尽处理要领...
- 【DockerCE】Docker-CE 20.10.14正式版发布
- 2021-08-02彻底解决Typora+PicGo-Core+SMMS图床的问题
- word的xml文件中空白页和换页