汇编语言编程规范
一、简介
代码编写规则是程序设计的应该在建立在一个工程项目之前。该规则应该贯穿整个项目的始终以保证代码的一致性。采用标准的代码编写惯例,可大大简化项目的维护负担。汇编语言的格式要比C语言简单,但可读性比C语言差,
可移植(Portability)
连贯(Consistency)
整洁(Neatness)
易于维护(Easymaintenance)
易于理解(Eunderstanding)
简洁(Simplicity)
不管采用那种风格,这种风格一定要贯穿你项目的始终。采用通用的代码编写风格可以减轻代码维护的
工作量并降低维护费用;这种通用的代码风格还可以避免重写代码。在经过一定的时间以后,当你重新查看原来的代码时,所需要的时间会比较短。
二、基本原则
制定标准的基本目的就是加强代码的可维护性。也就是说代码必须易于阅读,易于理解,易于测试,易于移植。并尽可能符合一般软件工程师的设计习惯。保持代码的简单清晰不要在语言中使用晦涩难懂的表述,直接表明你的思想。保持一致性尽可能使用同样的规则。避免使用复杂语句,一个语句若有太多的决策点将会使代码难于理解,尤其是对于测试。一旦修改已存在的代码,就要随时更新相关文档以遵守本文中所制定的规则,这将确保原有代码即时更新。
三、排版
1、程序块要采用缩进风格编写,缩进的空格6个
一定不要用[TAB]键,若使代码缩排一定要用空可键[SPACE]。[TAB]键会在不同的电脑或打印机上显示会有所不同,避免这种现象出现,就是使用空格键代替[TAB]键。
标号到第一个操作符:二次缩进,12个空格
第一个操作符到第一个操作数间:二次缩进,12个空格
第一个操作数到备注:四次缩进,24个空格。
如示:
Reset mov#0x300,SP;说明性的文字
0122448
如果标号超过11个字符,标号单独为一行。
如果注释不能在相应的位置写,可以移到下一行的相同位置,或者统一前移或后移一个TAB大小。但在相同的部分应该对齐。(以空行区分)
2、相对独立的程序块之间、变量说明之后必须加空行。
rrc R6
rrc R6
rrc R6
rrc R6
ret
mov#12,R7
3、如果行较长(>80字符)要分成多行书写,另起的注释行应该与上一行的注释列对齐,前面增加
分号。
四、注释
1、一般情况下,源程序有效注释量必须在20%以上。
说明:注释的原则是有助于对程序的阅读理解,在该加的地方都加了,注释不宜太多也不能太少,注释语言必须准确、易懂、简洁。
2、说明性文件(如头文件.件、.inc文件、.def文件、编译说明文件.cfg序等)头部应进行注释,
注释必须列出:版权说明、版本号、生成日期、作者、功能、与其它文件的关系、修改日志等,头文件的注释中还应有函数功能简要说明。
示例:下面这段头文件的头注释比较标准,当然,并不局限于此格式,但上述信息建议要包含在内。
/*************************************************
**版权:杭州利尔达科技有限公司
**文件名:Hytrometer.c
**版本:1.0
**工作环境:IAR2.21B(FET_R424.EXE)
**作者:Liang Yuan
**生成日期:2005.12.22汇编语言如何编程
**功能:热表的主程序
**相关文件:
**修改日志
3、每个模块或函数的头部应进行注释,列出:函数的目的/功能、输入参数、输出参数、返回值、调
用关系(函数、表)、所使用的资源等。
示例:下面这段函数的注释比较标准,当然,并不局限于此格式,但上述信息建议要包含在内。
/*************************************************
函数(模块)名称:
功能:
本函数(模块)调用的函数(模块)清单:
调用本函数(模块)的函数(模块)清单:
输入参数://输入参数说明,包括每个参数的作
//用、取值说明及参数间关系。
输出参数://对输出参数的说明。
函数返回值说明://函数返回值的说明
使用的资源//所使用的资源及相应资源的工作模式,比如TA等
其它说明://其它说明
*************************************************/
4、边写代码边注释,修改代码同时修改相应的注释,以保证注释与代码的一致性。不再有用的注释
要删除。
5、注释的内容要清楚、明了,含义准确,防止注释二义性。
说明:错误的注释不但无益反而有害。
6、避免在注释中使用缩写,特别是非常用缩写。
说明:在使用缩写时或之前,应对缩写进行必要的说明。
7、注释应与其描述的代码相靠近,对代码的注释应放在其上方或右方(对单条语句的注释)相邻位
置,不可放在下面,如放于上方则需与其上面的代码用空行隔开。
8、对于所有有物理含义的变量、常量,如果其命名不是充分自注释的,在声明时都必须加以注释,
说明其物理含义。变量、常量、宏的注释应放在其上方相邻位置或右方。
9、将注释与其上面的代码用空行隔开。
10、注释应考虑程序易读及外观排版的因素,使用的语言若是中、英兼有的,建议多使用中文,除
非能用非常流利准确的英文表达。
说明:注释语言不统一,影响程序易读性和外观排版,出于对维护人员的考虑,建议使用中文。
五、标识符命名
1、标识符的命名要清晰、明了,有明确含义,同时使用完整的单词或大家基本可以理解的缩写,避
免使人产生误解。
说明:较短的单词可通过去掉“元音”形成缩写;较长的单词可取单词的头几个字母形成缩写;一些单词有大家公认的缩写。
示例:如下单词的缩写能够被大家基本认可。
temp可缩写为tmp;
flag可缩写为flg;
statistic可缩写为stat;
increment可缩写为inc;
message可缩写为msg;
2、命名中若使用特殊约定或缩写,则要有注释说明。
说明:应该在源文件的开始之处,对文件中所使用的缩写或约定,特别是特殊的缩写,进行必要的注释说明。
3、自己特有的命名风格,要自始至终保持一致,不可来回变化。
说明:个人的命名风格,在符合所在项目组或产品组的命名规则的前提下,才可使用。(即命名规则中没有规定到的地方才可有个人命名风格)。
4、命名规范必须与所使用的系统风格保持一致,并在同一项目中统一,可以采用全小写或全大写加
下划线的风格或大小写混排的方式,不要使用大小写与下划线混排的方式。
示例:Add_User不允许,add_user、AddUser、m_AddUser允许。
5、除非必要,不要用数字或较奇怪的字符来定义标识符。
示例:如下命名,使人产生疑惑。
#define_EXAMPLE_0_TEST_
#define_EXAMPLE_1_TEST_
#define set_sls00
应改为有意义的单词命名
#define_EXAMPLE_UNIT_TEST_
#define_EXAMPLE_ASSERT_TEST_
6、在同一软件产品内,应规划好接口部分标识符(变量、结构、函数及常量)的命名,防止编译、
链接时产生冲突。
说明:对接口部分的标识符应该有更严格限制,防止冲突。如可规定接口部分的变量与常量之前加上“模块”标识等。
7、用正确的反义词组命名具有互斥意义的变量或相反动作的函数等。
说明:下面是一些在软件中常用的反义词组。
add/remove begin/end create/destroy
insert/delete first/last get/release
increment/decrement put/get
add/delete lock/unlock open/close
min/max old/new start/stop
next/previous source/target show/hide
send/receive source/destination
cut/paste up/down
8、除了编译开关/头文件等特殊应用,应避免使用_EXAMPLE_TEST_之类以下划线开始和结尾的定
义。
六、程序效率
1、尽可能使用寄存器编写程序
说明:寄存器有运行速度快,占用的空间少的特点。
2、子程序、功能模块可以使用寄存器编写,入口和出口的数据可以放在相应的RAM中,如果与主程序有
冲突,可以使用压栈和弹出指令。
3、尽可能使用常数寄存器,它可以节省空间,加快执行速度。
MSP430的常数分别为1、2、4、8、-1(即0xFFFF或0xFF)
4、仔细分析有关算法,并进行优化。
5、尽可能到各个程序功能的共性特点,将其变为子程序调用。
七、质量保证
1、软件设计过程中构筑软件质量。
2、代码质量保证优先原则
(1)正确性,指程序要实现设计要求的功能。
(2)稳定性、安全性,指程序稳定、可靠、安全。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论