6.2.5 Pragma指令例:#pragma DATA_ALIGN(x,2) short x[10]; 参考.align2 ●Pragma告诉编译器的预处理器如何处理函数(或符号)。 须在函数体外使用pragma,且出现在对函数、符号的 任何声明、定义或引用之前。否则,编译器会输出警告。 C55xC编译器支持如下pragma指令: CODE SECTION FUNC IS PURE C54X CALL FUNC IS SYSTEM C54X FAR CALL FUNC NEVER RETURNS DATA ALIGN FUNC NO GLOBAL ASG DATA SECTION FUNC NO IND ASG FUNC CANNOT INLINE MUST ITERATE FUNC EXT CALLED UNROLL 24
6.2.5 Pragma指令 ⚫Pragma告诉编译器的预处理器如何处理函数(或符号)。 ⚫须在函数体外使用pragma, 且出现在对函数、符号的 任何声明、定义或引用之前。否则, 编译器会输出警告。 ⚫C55x C编译器支持如下pragma指令: 24 CODE_SECTION C54X_CALL C54X_FAR_CALL DATA_ALIGN DATA_SECTION FUNC_CANNOT_INLINE FUNC_EXT_CALLED FUNC_IS_PURE FUNC_IS_SYSTEM FUNC_NEVER_RETURNS FUNC_NO_GLOBAL_ASG FUNC_NO_IND_ASG MUST_ITERATE UNROLL 例:#pragma DATA_ALIGN(x,2); short x[10]; 参考 .align 2
●CODE SECTION指令及其用法 ◆语法: #pragma CODE SECTION(func_name,"section_name") ◆作用:把C函数func name的代码配置到由section_name 定义的程序段中。 ◆C源程序: #pragma CODE SECTION(funcA,“codeA”) int funca(int a) int i; ◆汇编源程序: return (i a); sect “codeA global funca 米 FUNCTION NAME:funcA funcA: RET 25
⚫ CODE_SECTION指令及其用法 ◆ 语法: #pragma CODE_SECTION(func_name,"section_name") 25 ◆ 作用: 把C函数func_name的代码配置到由section_name 定义的程序段中。 ◆ C源程序: #pragma CODE_SECTION(funcA,“codeA”) int funcA(int a) { int i; return (i = a); } ◆ 汇编源程序: .sect “codeA” .global _funcA * FUNCTION NAME: _funcA * _funcA: RET
●DATA SECTION指令及其用法 ◆语法: #pragma DATA SECTION(var name,"section name") ◆作用:var name是包含在C函数内的变量名称,该指令将 数据var name配置到由section name定义的数据段中. ◆例如:C源程序: #pragma DATA SECTION(bufferB,"my_sect") char bufferA[512]; char bufferB[512]; ◆则汇编源程序: global bufferA .bss bufferA.512 global bufferB bufferB:.usect "my sect",512 26
26 ◆ 例如:C源程序: #pragma DATA_SECTION(bufferB, "my_sect") char bufferA[512]; char bufferB[512]; ◆ 则汇编源程序: .global _bufferA .bss _bufferA,512 .global _bufferB _bufferB: .usect "my_sect", 512 ◆ 语法: #pragma DATA_SECTION(var_name, "section_name") ⚫ DATA_SECTION指令及其用法 ◆ 作用: var_name是包含在C函数内的变量名称, 该指令将 数据var_name配置到由section_name定义的数据段中
6.2.6标准ANSI C语言模式的改变 (-pk、pr和-ps选项) 编译源代码有如下的模式: ◆Normal ANSI模式(默认) ◆K&RC模式(不适用于C++代码) ◆宽松ANSI模式 ◆严格ANSI模式 27
6.2.6 标准ANSI C语言模式的改变 (-pk、-pr和-ps选项) 编译源代码有如下的模式: ◆ Normal ANSI模式(默认) ◆ K&R C模式(不适用于C++代码 ) ◆宽松ANSI模式 ◆严格ANSI模式 27
3.2.5 构建(Build)操作的参数设置 构建参数包括汇编器参数和链接器参数(对C程序还包 括编译器参数)。方法:将鼠标移至Project Explorer?”中 的当前工程文皓品2h仙右击蕊总 、十安出出又 -▣☒ Eile Edit Yiew Navigate Eroject Bun Scripts Hindow Help “Properties” 的·图脑代·教··回与宁·÷ 台母ccs Edit Project Explorer曰年y口口2gx31.cmd 目E3_1.asm3 Ex3_1.Pjt [Active Debue 白招Binaries Hew Ex3_1.pjt.out -[C5500/Copy Ctrl+C 日Ineludes D:/ti/eesv5/tools/compil Esste Ctrl+V 曰Debue5 卫elete Delete 年斤Ex31.obj-[C5500/be] Source Ex3_1.pjt.out [C5500/b M0型色 目ces0bjs.opt Renamne.. F2 目Ex3_1.pjt.m好 makefile Import... objects.mk t☒Expor t.· Problems sources.mk 0 items 圆画subdir_rules.mk Show Build Settings... Build Project Description subdir_vars.mk 曰固Ex3_1.asm Clean Project 曰-回start Rebuild Project -⊙L1 Refresh 5 白2Ex3_1.cmd Close Project DARAM1 Build Configurations ⊙DARAI2 Make Targets Index Add Files... 卫ebug As Team :Licensed Compare With Restore from Local History... Refactor Source Source Propertias Alt+Enter Zo
3.2.5 构建(Build)操作的参数设置 28 ◼ 构建参数包括汇编器参数和链接器参数(对C程序还包 括编译器参数)。方法:将鼠标移至“Project Explorer” 中 的当前工程文件Ex3_1.pjt处, 右击菜单选择 “Properties”, 打开Properties窗口