首页
课程
问答
CTF
社区
招聘
看雪峰会
发现
排行榜
知识库
工具下载
看雪20年
看雪商城
证书查询
登录
注册
首页
社区
课程
招聘
发现
问答
CTF
排行榜
知识库
工具下载
看雪峰会
看雪商城
证书查询
社区
编程技术
发新帖
2
0
OF标志位
发表于: 2018-12-4 21:25
3453
OF标志位
jmpcall
3
2018-12-4 21:25
3453
OF标志位,用于判断2个有符号数相加或相减的结果是否溢出。
由于闲的慌,想了一下原因,顺便记录下来:
假设将次高位产生的进位,存到MSB变量中,则根据intel手册中的描述:OF标志位 = CF 异或 MSB
由于从数学的角度,减法运算可以转换为加法运算:
正 - 正 = 正 + 负
正 - 负 = 正 + 正
负 - 正 = 负 + 负
负 - 负 = 负 + 正
所以只需要关注加法:
正 + 正:CF肯定为0。溢出时MSB=1,此时CPU正好也会设置OF为1;没有溢出时,MSB=0,此时CPU也会设置OF为0;
正 + 负( 负 + 正 ):负数被编译器转换成了补码,最高位的和肯定为1。MSB为0时,CF也为0,MSB为1时,CF也为1,即OF始终为0,与正负数相加不可能产生溢出的事实吻合;
负 + 负:CF肯定为1。由于都是补码,MSB=0,表示补码+补码没有溢出,反而原码+原码溢出了,此时OF为1没毛病;MSB=1,表示补码+补码溢出了,反而原码+原码没有溢出,此时OF为0也没毛病。
[课程]Android-CTF解题方法汇总!
收藏
・
2
免费
・
0
支持
分享
分享到微信
分享到QQ
分享到微博
赞赏记录
参与人
雪币
留言
时间
查看更多
赞赏
×
1 雪花
5 雪花
10 雪花
20 雪花
50 雪花
80 雪花
100 雪花
150 雪花
200 雪花
支付方式:
微信支付
赞赏留言:
快捷留言
感谢分享~
精品文章~
原创内容~
精彩转帖~
助人为乐~
最新回复
(
1
)
jackwolail
雪 币:
737
活跃值:
(483)
能力值:
( LV2,RANK:10 )
在线值:
发帖
11
回帖
35
粉丝
1
关注
私信
jackwolail
2
楼
好好学习,天天向上
2018-12-4 22:21
0
游客
登录
|
注册
方可回帖
回帖
表情
雪币赚取及消费
高级回复
返回
jmpcall
3
35
发帖
218
回帖
240
RANK
关注
私信
他的文章
gcc -O2编译,gdb单步执行怪怪的
9442
systemtap追踪自己开发的内核模块
11383
PCI总线初始化过程(linux-2.4.0内核中的pci_init()函数分析)
16841
关于我们
联系我们
企业服务
看雪公众号
专注于PC、移动、智能设备安全研究及逆向工程的开发者社区
看原图
赞赏
×
雪币:
+
留言:
快捷留言
返回
顶部