为了避免使用低效的语言结构理解MSP430 结构的限制是重要的下面是有关怎样最好地
使用MSP430 编译器的建议
因为在MSP430 上位域类型执行缓慢所以应当仅在为了保存数据存储器空间时才使用它
用unsigned char 或unsigned int 的位屏蔽代替位域如果用户必须使用位域那么为了提高
效率使用unsigned
在其模块之外不使用的变量应当被声明为静态的static 这是因为这样将改善把它们暂
时保存在寄存器中的可能性
?1 在可能时 使用无符号unsigned 数据类型某些时候unsigned 无符号操作比signed
有符号操作执行效率更高这特别适用于除法和求模运算
?2使用 ANSI 原型对ANSI 函数的调用比对K&S 样式K&S-style 函数的调用能效率更
高地被执行参见K&S 和ANSI C 语言定义一节
?3对 16 位数据类型例如short 和unsigned short MSP430 的工作效率更高通常8 位
数据类型的使用节省数据空间但不减少代码大小MSP430 的结构不直接支持32 位数
据类型因而其效率较低
?4自动比例(scalar auto)变量常被分配在寄存器中所以只要有可能就应使用自动而
不是静态变量
?5函数的头两个参数 parameters 在寄存器中传送参见调用约定一节能因此以
参数parameters 而不是静态变量方式把自变量(arguments)传送给函数是更为有装
的
?6复制结构 structs 和联合unions 是耗费较大的操作应避免运行时结构/联合的
赋值带结构/联合参数的函数以及返回结构/联合的函数只要有可能应采取指向结
构/联合的指针操作
?7每当调用了函数时 声明在这些函数中具有初始值的非自动比例Non-scalar auto
变量结构联合和数组将引起运行时run-time 复制对于常数变量使用储存
类静态常量the storage class static const” 可避免这种情况
使用MSP430 编译器的建议
因为在MSP430 上位域类型执行缓慢所以应当仅在为了保存数据存储器空间时才使用它
用unsigned char 或unsigned int 的位屏蔽代替位域如果用户必须使用位域那么为了提高
效率使用unsigned
在其模块之外不使用的变量应当被声明为静态的static 这是因为这样将改善把它们暂
时保存在寄存器中的可能性
?1 在可能时 使用无符号unsigned 数据类型某些时候unsigned 无符号操作比signed
有符号操作执行效率更高这特别适用于除法和求模运算
?2使用 ANSI 原型对ANSI 函数的调用比对K&S 样式K&S-style 函数的调用能效率更
高地被执行参见K&S 和ANSI C 语言定义一节
?3对 16 位数据类型例如short 和unsigned short MSP430 的工作效率更高通常8 位
数据类型的使用节省数据空间但不减少代码大小MSP430 的结构不直接支持32 位数
据类型因而其效率较低
?4自动比例(scalar auto)变量常被分配在寄存器中所以只要有可能就应使用自动而
不是静态变量
?5函数的头两个参数 parameters 在寄存器中传送参见调用约定一节能因此以
参数parameters 而不是静态变量方式把自变量(arguments)传送给函数是更为有装
的
?6复制结构 structs 和联合unions 是耗费较大的操作应避免运行时结构/联合的
赋值带结构/联合参数的函数以及返回结构/联合的函数只要有可能应采取指向结
构/联合的指针操作
?7每当调用了函数时 声明在这些函数中具有初始值的非自动比例Non-scalar auto
变量结构联合和数组将引起运行时run-time 复制对于常数变量使用储存
类静态常量the storage class static const” 可避免这种情况