在 ASM 中,对于区分变量定义的类型时,对于初学者可能会有点茫然,毕竟,那些指令不是很好理解,
例如 int 的定义------------:mov [ebp+var_14], 1
double------------------: mov dword ptr [ebp+var_14], 1
它们的不同就在于前缀上,dword ptr 指明了是将1 放到 [ebp+var_14] 地址的空间内,它是8 个字节的。。。
double 不也是 8 个字节吗。。对吧,所以这个就好理解了。。。
fild [ebp+var_18] ;压栈
fidiv [ebp+var_14] ;除法
fstp [ebp+var_10] ;出栈-------
fld [ebp+var_8] ;压栈
fadd [ebp+var_10] ;加法
fstp [ebp+var_8] ;出栈
jmp short loc_4015D4
上边的这一段,可能很令人疑惑,这些指令比较的偏,不像 mov , add 这些这么好理解,
其实,它们似乎是成组成组的出现的。。
首先,fild 就是把 var_18 放到 栈中,然后,fidiv 就是去栈内元素做除法,结果 送 、var_18..
fstp,也就是去 接受刚才前边入栈的 var_18 的内容,也就是 前边执行完了的操作的值。。。
一下 FLD ,FADD,FSTP ,都是一组的操作,大同小异。。。