文档章节

初学 Delphi 嵌入汇编[28] - 把 EAX 的值置为 0 的三种方法与效率

涂孟超
 涂孟超
发布于 2014/09/26 15:32
字数 160
阅读 8
收藏 0
//以下三个函数功能一样, 但效率不同

{Fun1 需要读取常数 0, 最慢}
function Fun1: Integer;
asm
  mov eax, 0
end;

{Fun2 与 Fun3 只是操作 CPU 的寄存器, 比 Fun1 快}
function Fun2: Integer;
asm
  sub eax, eax
end;

{Fun3 最快}
function Fun3: Integer;
asm
  xor eax, eax
end;


//速度测试
procedure TForm1.Button1Click(Sender: TObject);
var
  t: Cardinal;
  i: Integer;
begin
  t := GetTickCount;
  for i := 0 to 100000000 do Fun1;
  t := GetTickCount - t;
  ShowMessage(IntToStr(t)); {均: 600 多}


  t := GetTickCount;
  for i := 0 to 100000000 do Fun2;
  t := GetTickCount - t;
  ShowMessage(IntToStr(t)); {均: 500 多}


  t := GetTickCount;
  for i := 0 to 100000000 do Fun3;
  t := GetTickCount - t;
  ShowMessage(IntToStr(t)); {均: 400 多}
end;

 
 
 
 
 

 

 

  

本文转载自:http://www.cnblogs.com/del/archive/2008/01/30/1058443.html

共有 人打赏支持
涂孟超
粉丝 12
博文 2011
码字总数 14107
作品 0
深圳
程序员
私信 提问
Linux 汇编语言开发指南

Linux 汇编语言开发指南 肖文鹏 ( xiaowp@263.net), 北京理工大学计算机系硕士研究生 本文作者 肖文鹏是北京理工大学计算机系的一名硕士研究生,主要从事操作系统和分布式计算环境的研究,喜...

晨曦之光
2012/03/09
733
0
AT&T的汇编格式&X86内联汇编

AT&T的汇编格式 一 基本语法 语法上主要有以下几个不同. ★ 寄存器命名原则 AT&T: %eax Intel: eax ★源/目的操作数顺序 AT&T: movl %eax,%ebx Intel: mov ebx,eax ★常数/立即数的格式 AT...

AlphaJay
2012/05/18
0
0
Linux下的AT&T语法(即GNU as 汇编语法)入门

学习这么长时间,一直在C语言这一层面上钻研和打拼,日积月累,很多关于C的疑惑在书本和资料中都难以找到答案。程序员是追求完美的一个种群,其头 脑中哪怕是存在一点点的思维黑洞都会让其坐...

晨曦之光
2012/03/09
553
0
fork()两次不同返回值的实现

对于fork来说,父子进程共享同一段代码空间,所以给人的感觉好像是有两次返回,其实对于调用fork的父进程来说,如果fork出来的子进程没 有得到 调度,那么父进程从fork系统调用返回,同时分析...

vazor
2012/10/28
0
0
关于lm-sensors中i8k.c的研究

由于使用Dell Vostro,在Arch下看不到风扇的转速(当然更没法控制风扇)。 看了一下,发现是i8k的问题,于是拿来代码研究一下(虽然我是小白…… i8k的代码在:http://khali.linux-fr.org/d...

mingkaidox
2013/06/19
0
0

没有更多内容

加载失败,请刷新页面

加载更多

JavaEE开发的颠覆者SpringBoot实战摘要笔记

一、注解理解 1.spring注解 1)@Configuration/@ComponentScan/@Bean注解实现java方式的配置。 @Configuration代替xml文件 @ComponentScan指定扫描范围 @Bean代替bean标签 2)@Bean、@Componen...

啃不动地大坚果
19分钟前
1
0
跨链技术的分析和思考

当前的区块链底层技术平台百花齐放,不同的业务、不同的技术底层的区块链之间缺乏统一的互联互通的机制,这极大限制了区块链技术和应用生态的健康发展。跨链的需求由此而来,本文通过分析几种...

Tiny熊
21分钟前
0
0
使用css预处理器sass轻松生成margin、padding四个方向多个值的css样式代码

直接在scss文件上复制这段scss代码: $directions:("t":"top", "b":"bottom", "l":"left", "r":"right");$dimensions:("p":"padding", "m":"margin");//获取padding margin间隔@each $......

祖达
38分钟前
0
0
gearman安装,提示错误:configure: error: could not find boost

背景及最终解决方案 在CentOS 7上安装gearman时,提示错误:configure: error: could not find boost,最终解决方案是: 先安装: # yum install -y boost boost-devel 发现问题还是没解决,...

暗夜在火星
45分钟前
2
0
NFS服务

问题1: A机器上传了一张图片,结果B机器访问的时候就提示404. NFS,Network File System。网络文件系统,即通过网络,对在不同主机上的文件进行共享。 NFS最早由Sun公司开发,分2,3,4三个...

wzb88
46分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部