比较运算符的内部实现
比较运算符>,<, ==等预算符内部是怎么实现的。比如两个int a,b;我们判断两个数的是否相等
if(a==b){}这边是怎么比的,是将a和b在内存中二进制位一位一位的进行比较是否相同吗?
换做是浮点数呢?
[解决办法]
本帖最后由 steedhorse 于 2013-10-19 00:23:32 编辑 从汇编语言看,一般是相减看是否为0。
[解决办法]
这个没有什么好神秘的,我们有高级语言的写的语句,在编译完后会对应一条或多条的汇编指令.
if(a==b){}
可以对应的指令是:
mov eax,dword ptr [b]
cmp dword ptr [a],eax //这是比较
jne fun+88h (411528h) //这是根据比较的结果,进行分支跳转,如果不相等就跳到411528h处的指令往下执行,如果相等,就执行该指令的下一条指令.
[解决办法]
cmp 其实是减法指令,相减,但不改变操作数.
只改变Cpu 标志位.