tms320c2000 c语言伪指令,DSP C

15.2.6 asm语句

C编译器可在编译器输出的汇编语言程序中直接输出汇编指令或语句。利用asm语句嵌入汇编语言程序,可实现一些C语言

实现起来比较麻烦的硬件控制功能。

asm语句在语法上就象是调用一个函数名为asm的函数,函数参数是一个字符串:asm (“assembler text”);

编译器会直接将“参数字符串”复制到输出的汇编语言程序中,因此必须保证参数双引号之间的字符串是一个有效的汇编语言指令。

双引号之间的汇编指令必须以空格、制表符(TAB)、标记符(LABEL)或注释开头,这和汇编语言编程的要求是一致的。

编译器不会检查此汇编语句是否合法,如果语句中有错误,在汇编的过程中会被汇编器指出。使用asm指令应小心不要破坏C语言的环境。如果C代码中插入跳转指令和标记符可能会引起不可预料的操作结果。能够改变段或其它影响C语言环境的指令也可能引起麻烦。

对包含asm语句的程序使用优化器时要特别小心。优化器可以重新安排asm指令附近的代码顺序,这可能会引起不期望的结果。

15.2.7 访问I/O空间

读写I/O空间的功能是C编译器对标准C的扩展,是利用关键字ioport(I/O端口)来实现的。

ioport type port hexnum;

ioport指示这是定义一个端口变量的关键字。

type(类型)必须是char(字符)、short(短整型)、int(整型)或对应的无符号类型。

port hexnum为定义的端口变量,格式为“port”后面跟一个16进制数。

例如“port000A”是定义访问I/O空间地址0Ah的变量。

所有I/O端口的定义必须在文件级完成,不支持在函数级声明的I/O端口变量。

利用ioport关键字定义的I/O端口变量可以象一般变量一样进行赋值操作:ioport unsinged port10; /*访问I/O空间10h的变量*/

{

......

port10 = a; /*将a写到端口10h*/

......

b = port10; /*从端口10h读入b*/

......

}

端口变量的使用不仅限于赋值操作,用ioport关键字定义的I/O端口变量可象其它变量一样用在表达式中,例如:

a = port10 + b; /*读端口10h,加上b,结果赋给a*/

port10 += a;/*读端口10h,加上a,结果写回到端口10h*/

在进行函数调用的时候,可以做I/O端口变量的值传递,而不是引用,例如:

call (port10); /*读端口10h,将其值传递给函数调用*/

call (&port10); /*引用传递无效!*/

15.2.8 访问数据空间

访问数据空间是利用指针来实现的:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值