和求余运算巧妙结合的jns指令
.text:004A78B1 and eax, 80000001h
.text:004A78B6 jns short loc_4A78BD
.text:004A78B8 dec eax
.text:004A78B9 or eax, 0FFFFFFFEh
.text:004A78BC inc eax
.text:004A78BD
.text:004A78BD loc_4A78BD:
.text:004A78BD jnz short loc_4A78D9
当你看到这段代码,它是什么意思呢?
我曾经在看雪的帖子上看到过相当好的解释,可是现在找不到了,很遗憾
那么只好自己记录下
阅读下面代码,你就懂得它的含义
18: if(i%2 == 0)
0041147C 8B 45 F8 mov eax,dword ptr [i]
0041147F 25 01 00 00 80 and eax,80000001h
00411484 79 05 jns main+6Bh (41148Bh)
00411486 48 dec eax
00411487 83 C8 FE or eax,0FFFFFFFEh
0041148A 40 inc eax
0041148B 85 C0 test eax,eax
0041148D 75 19 jne main+88h (4114A8h)
19: {
20:
21: count++;
0041148F A1 9C 90 41 00 mov eax,dword ptr [count]
00411494 83 C0 01 add eax,1
00411497 A3 9C 90 41 00 mov dword ptr [count],eax
22: sum += count;
0041149C 8B 45 EC mov eax,dword ptr [sum]
0041149F 03 05 9C 90 41 00 add eax,dword ptr [count]
004114A5 89 45 EC mov dword ptr [sum],eax
23: }
24: sum += count;
004114A8 8B 45 EC mov eax,dword ptr [sum]
004114AB 03 05 A0 90 41 00 add eax,dword ptr [count]
004114B1 89 45 EC mov dword ptr [sum],eax
和求余运算巧妙结合的jns指令的更多相关文章
- Swift 求余运算
求余运算 求余运算(a % b)是计算b的多少倍刚刚好可以容入a,返回多出来的那部分(余数). 注意:求余运算(%)在其他语言也叫取模运算.然而严格说来,我们看该运算符对负数的操作结果,"求 ...
- PHP:第一章——按位运算和求余运算(判断奇偶数)
<?php //按位运算:与1按位运算等于0,输出偶数.如果等于1,输出奇数 //输出偶数: for($i=0;$i<10;$i++){ if(($i & 1)==0){ echo ...
- java 整除(/) 求余(%) 运算
1. java 整除(/) 求余(%) 运算 1.求余 System.out.println(11%2); //顾名思义就是11除2的余数-->1 System.out. ...
- 051-PHP求余运算
<?php $x=10%5; //进行求余运算 $y=10%3; //进行求余运算 $z=10%6; //进行求余运算 echo $x; //输出变量x的值 echo $y; //输出变量y的值 ...
- C语言负数的除法和求余运算
假定我们让 a 除以 b,商为 q,余数为 r: q = a / b; r = a % b; 这里,不妨假定 b 大于 0. 我们希望 a.b.q.r 之间维持怎样的关系呢? 1.最重的一点,我们希望 ...
- Sicily1020-大数求余算法及优化
Github最终优化代码: https://github.com/laiy/Datastructure-Algorithm/blob/master/sicily/1020.c 题目如下: 1020. ...
- java学习--高效的除模取余运算(n-1)&hash
没有测试过使用取余运算符和位运算符都做同一件事时的时间效率! 取余运算符% 如3除以2取余数 a = a%; 结果为1 上面是传统的方式进行求余运算. 需要先将10进制转成2进制到内存中进行计算,然后 ...
- Verilog求余
在实现三角函数时,考虑到函数的周期性,综量(自变量)需对周期做求余运算. 假设函数周期为T = 2^N,那么求余运算就是直接取该数的低N位,即: 以M位正数为例(符号位为0),reg [M-1:0] ...
- Java求余%引发的一连串故事
C1 RCE对%的处理 HotSpot VM的C1有个RCE(Range Check Elimination,范围检查消除)优化,所谓范围检查消除,就是为了正确的抛出数组越界异常,虚拟机需要在数组访问 ...
随机推荐
- VS2010 + IDA SDK 搭建IDA Plugin开发环境
http://www.h4ck.org.cn/2011/11/vs2010-idasdk6-2-ida-plugin-development/ 1. 执行菜单的File->New->Pro ...
- 修改Linux默认启动级别或模式
在Linux中有7种启动级别,默认是X-Window,像是Windows的窗口模式,而Linux的操作和配置一般我们都采用输入命令的方式来完成,像DOS操作系统一样,如何让Linux一启动就进入这种模 ...
- jdk8 流操作
二.流 2.1 流介绍 流是Java API的新成员,它允许你以声明性方式处理数据集合(通过查询语句来表达,而不是临时编写一个实现).就现在来说,你可以把它们看成遍历数据集的高级迭代器.此外,流还可以 ...
- .NET:负载平衡的主意事项
允许局域网发现和共享. 设置固定IP. 网站的IP设置为“全部未分配”. 注意:如果停止IIS的话,不会对负载平衡有影响,负载还是会分配停止了的IIS所在在的电脑,只有停止服务器了,负载不会再分配给停 ...
- ArcGIS For Android ExportTileCache应用
说明:从ArcGIS For Android10.2.4 ,開始支持下载在线地图服务切片缓存到移动设备本地.以便离线时进行地图浏览.本文章摘要介绍,使用自己公布的服务时,须要注意的内容. 一.首先公布 ...
- ssh 远程登陆指定端口
ssh 到指定端口 ssh -p xx user@ip xx 为 端口号 user为用户名 ip为要登陆的ip SSH 原理及远程登录 http://www.ruanyifeng ...
- 更改Thunderbird的默认语言
使用的Thunderbird Poratable版本是英文的,可以用以下方式修改为中文界面: 1.下载中文语言包 在官方网站的https://addons.mozilla.org/en-US/thun ...
- 使用PowerDesigner建立数据库模型【转】
1. 打开PowerDesigner,点击File->New 2. 选择Conceptual Data Model,并修改Model name. 3. 在Palette工具栏中点击Entity ...
- mac下的一些命令
1.显示隐藏文件 defaults write com.apple.finder AppleShowAllFiles -bool true 2.隐藏隐藏文件 defaults write com.ap ...
- HTML5 input file控件使用accept过滤限制的文件类型以及在谷歌下打开很慢的问题
在文件上传控件(input type='file')中,可以通过accept属性实现对文件类型的过滤. 一.相关代码: 下面给出对应的文件上传控件代码: <input type="fi ...