55x C编译器可以直接将C55x汇编语言指令嵌入到编译器的汇编语言输出中,这就是C语言的扩展功能—asm指令。这个语句提供了C不能提供的对硬件的访问功能。这个语句就好像是对叫做asm的函数的调用。asm指令格式如下:
asm (“assembler text”);
编译器直接把命令中的字符串复制到输出文件中。汇编器文档必须包括到两个引用中。所有常用字符串转义符保留原来的定义。例如,可以插入包含引用的string指令:
asm(“STR: .string\“abc\” ”);
插入的代码必须是合法的汇编语言指令。像其它汇编语言指令一样,包含引用的代码行必须用标号、空格、星号、分号开头。编译器不检查字符串。如果有错,汇编器会将其检测出来。
使用asm指令有个问题:它容易破坏C环境,因为C编译器在编译嵌入了汇编语言的C程序时并不检查或分析嵌入的汇编语句。当使用带asm指令的优化器时必须小心。虽然优化器不会移除asm指令,但它可以重新改变周围代码顺序并可能引起不可预知的结果。 |