基于汇编语言教学中优化语言代码方法探讨与研究

2017-08-07 14:27:36李忠武
电子测试 2017年10期
关键词:指令技巧优化

李忠武

(保山学院,云南保山,678000)

基于汇编语言教学中优化语言代码方法探讨与研究

李忠武

(保山学院,云南保山,678000)

本文讨论一些优化X86汇编语言代码的简单编程技巧。建议把这些技巧应用在运行于Intel最新微架构(包括Haswell、Sandy Bridge和Nehalem)代码中。大多数技巧同样适用于更早的微架构。可以把优化技巧和辅助性的指导方针分为五大类:基本优化、浮点算术、程序分支、数据对齐、SIMD技巧。

基本优化;浮点算术;程序分支;数据对齐;SIMD技巧

0 引言

需要谨记的一个要点是,接下来的基本优化、浮点算术、程序分支、数据对齐、SIMD技巧优化技巧都必须谨慎使用。[1]例如,如果仅为避免使用不推荐的指令形式一次,就增加多条额外的push和pop指令,那么是没有意义的。

1 基本优化

下面列出了一些常用于提高X86汇编语言代码性能的基本优化技巧。

(1)尽可能使用test指令,而不是cmp指令。

(2)尽可能避免使用内存与立即数形式的cmp和test指令(例如,cmp dword ptr[ebp+16],100或者test byte ptr[r12],0fh)。最好先将内存值载入寄存器,然后使用寄存器与立即数形式的cmp和test指令(如mov eax,dword ptr[ebp+16],接着cmp eax,100)。

(3)使用add或者sub指令,而不是inc或者dec指令,特别是在性能关键的循环中。后面的两个指令不会更新EFLAGS寄存器中的所有标志位,通常会慢一些。

(4)使用or、sub、pxor、xorps等指令将一个寄存器置0,而不是用数据传送指令。例如,xor eax,eax和xorps xmm0, xmm0比mov eax,0和movaps xmm0,xmmword ptr[XmmZero]要好。

(5)在所有操作数宽度前缀的指令中,避免使用16位立即数,而应该使用对应的32位或者8位立即数。例如,使用mov edx,42而不是mov dx,42。

(6)展开(或者部分展开)循环次数是常数的小循环。(7)将在计算中多次使用的内存值载入寄存器。……

登录APP查看全文

猜你喜欢
指令技巧优化
听我指令:大催眠术
超限高层建筑结构设计与优化思考
房地产导刊(2022年5期)2022-06-01 06:20:14
肉兔短期增肥有技巧
今日农业(2021年1期)2021-11-26 07:00:56
民用建筑防烟排烟设计优化探讨
关于优化消防安全告知承诺的一些思考
一道优化题的几何解法
开好家长会的几点技巧
甘肃教育(2020年12期)2020-04-13 06:24:46
ARINC661显控指令快速验证方法
测控技术(2018年5期)2018-12-09 09:04:26
LED照明产品欧盟ErP指令要求解读
电子测试(2018年18期)2018-11-14 02:30:34
指正要有技巧