如何测量两组汇编指令的执行效率
本文是纯干货。
由于现代的处理器支持乱序执行代码,另一个说法叫做cpu指令重拍。为了测量的准确性,本例中使用了cpuid指令,属于序列化指令。它可以保证汇编指令的执行的有序性。用来避免cpu指令重拍。
注意,这里说的是cpuid汇编指令,不是java和c中的volatile关键字,更不是什么内存屏障。
这个问题可以参考文章https://stackoverflow.com/questions/12631856/difference-between-rdtscp-rdtsc-memory-and-cpuid-rdtsc
这里的循环次数的设置在cpuid指令之后,因为cpuid指令会修改rcx寄存器的值。
tsc寄存器在每个cpu时钟信号到来时+1。比如,主频为 1M Hz 的 CPU,这个寄存器每秒就递增 1 000 000 次。服务器 x86-64 的 CPU 主频一般都在 1G Hz 以上,所以通过这个指令,我们可以获得纳秒级别的时间精度。
本文汇编代码是在linux 64位cpu x86-64架构下编写的。
现在直接上代码。
;test.asm
extern printf
section .datafmt0 db "test speed",10,0fmt4 db 10,"number of loops: %d",10,0fmt5 db "A: %d",10,0fmt6 db &#
如何测量两组汇编指令的执行效率相关推荐
- ARM 原子操作里的两个汇编指令
今天一个读者朋友给我留言,问了这个问题,ARM原子操作的汇编代码,还给我截图了两个不同的解释,让我说哪个是正确的. 原子操作的起因是为了内核同步,保证数据在正确性,之前已经吹过一波,可以看这几篇文章. ...
- 如何执行一条汇编指令
在电脑中执行一条指令主要又三个步骤: (1)在指定地址上写入一条汇编指令 (2)使cs寄存器与ip寄存器指向指令所在的地址 (3)开始执行 (1)在指定地址写入一条汇编指令: 终端上常用的命令有:R命 ...
- 实验一 查看CPU和内存 用机器指令和汇编指令编程
一. Debug的使用 1. 什么是Debug Debug是Dos.Windows都提供的实模式(8086方式)程序调试的工具.使用它,可以查看CPU各种寄存器的内容.内存的情况和在机器码级跟踪程序运 ...
- 汇编为什么分段执行总是执行不了_iOS汇编教程(六)CPU 指令重排与内存屏障...
系列文章 iOS 汇编入门教程(一)ARM64 汇编基础 iOS 汇编入门教程(二)在 Xcode 工程中嵌入汇编代码 iOS 汇编入门教程(三)汇编中的 Section 与数据存取 iOS 汇编教程 ...
- c语言将两个16位变为一个32位,16位汇编第六讲汇编指令详解第第三讲(示例代码)...
16位汇编第六讲汇编指令详解第第三讲 1.十进制调整指令 1. 十进制数调整指令对二进制运算的结果进行十进制调整,以得到十进制的运算结果 2.分成压缩BCD码和非压缩BCD码调整 简而言之: 以前的时 ...
- 【嵌入式开发】 ARM 汇编 (指令分类 | 伪指令 | 协处理器访问指令)
作者 : 韩曙亮 博客地址 : http://blog.csdn.net/shulianghan/article/details/42408137 转载请著名出处 本博客相关文档下载 : -- A ...
- 两组的数据平均值合并_地理信息系统导论学习笔记(10)—数据探查
点击上方蓝字可加关注 微信公号:ArcGisdada 互助.共享.学习 上面这本书就是学习的教材,大家需要一起学习的可以点击购买.一共十八章(第一章绪论.第二章坐标系统.第三章矢量数据模型.第四章栅格 ...
- S5PV210体系结构与接口02:ARM编程模型 汇编指令
目录 1. ARM的基本设定 1.1 ARM数据类型 1.1.1 基本数据类型 1.1.2 浮点数据类型 1.1.3 存储器大小端 1.2 支持的指令集 2. Cortex-A8编程模型 2.1 处理 ...
- 小于等于0_从0开始学ARMARM汇编指令其实很简单
学习ARM,就必须要学习ARM指令,ARM指令是CPU提供给我们的接口,是我们打开CPU这个潘多拉魔盒的钥匙. ARM指令有很多,为了让大家能快速上手,一口君整理了一些对我们最有帮助的指令.keil软 ...
最新文章
- 【01】为什么需要UML
- java批量事物管理_[疯狂Java]JDBC:事务管理、中间点、批量更新
- codeforces 706B B. Interesting drink(二分)
- CTS/APIO后文化课游记
- html如何与php,html页面怎么跟php文件连接
- HDU 3306 Another kind of Fibonacci
- 为什么苹果不再需要谷歌地图?
- #define的高级用法
- 工科学生考研能选择计算机专业么,这8个“工科专业”考研后发展会更好,毕业生紧缺度高,前途很好!...
- elementui下拉框选择图片_Element UI系列:Select下拉框实现默认选择
- iphone微信美颜插件_iOS13.5 插件分享
- *第十三周*数据结构实践项目一【验证Prim算法】
- Cygwin-安装和配置ssh服务
- 微信授权+JS-SDK
- 大学计算机ppt学校题材实验报告,PPT实验报告模板2篇
- windows下Vue安装教程(超级详细,一些细节坑)
- 五十位名嘴用文字悼念心中永远的榜样罗京
- [Unity2D入门教程]简单制作仿植物大战僵尸游戏之③完善Defender植物和Attacker的相关细节(脚本,碰撞体)
- SIM800C AT指令编程
- 腾讯云TCP架构高级工程师认证考试大纲、考题下载及说明