能力值:
( LV13,RANK:1250 )
|
-
-
2 楼
neg eax ;如果 eax 不等于 0 置CF,否则清CF
sbb eax,eax ;如果CF 置位则让eax= -1(0FFFFFFFFh),否则让eax = 0
and eax,XXXXXX
因此这段指令序列可以表示为C的形式:
eax = (eax == 0? 0: XXXXXX)
当然高级语言源程序中不可能有eax这种东西,可以根据程序上下文消去。
我最近的一点作业也碰到了这种情况,我的文章里有简略说明,顺便打个广告:
http://bbs.pediy.com/showthread.php?t=49531
看第3节附录
|
能力值:
( LV4,RANK:50 )
|
-
-
3 楼
谢谢楼上兄弟点拨
经验证后如下:
对于C中的?表达式
r = (condition)?(exp1):(exp2)
微软编译器,未开优化情况下编译结果如下
mov eax,condition
neg eax,
sbb eax,eax
and eax, (exp1-exp2)
add eax,exp2
mov r,eax
|
能力值:
( LV12,RANK:250 )
|
-
-
4 楼
if(...)
一行代码
else
一行代码
|
能力值:
( LV4,RANK:50 )
|
-
-
5 楼
汗....这个问题是属于"入门级"的问题??
|
|
|