您的位置:首页 > 编程开发 > 易语言

堆栈处理理解,双精度汇编加法做对比

:1.97KB :2021-02-08 10:59:55

这里两个双精度参数一个双精度 长度为8字节 8+8 16 所以 retn 0x10 也就是十进制的16
易语言堆栈处理理解,双精度汇编加法做对比例子。
' 以上三行是易语言自行添加上去的
' fld qword [ebp+0x08] 第一个参数从 8 到 c 八个字节 属于第一个参数
' fadd qword [ebp+0x10] 第二个参数从 10 到 14 八个字节 属于第二个参数
' fstp qword [ebp+0x08] ebp+0x08 和堆栈那个 地址是相反的 不是把 0x0c 先压进去 而是把 0x08 压进去计算
' 堆栈中计算 ebp-0x08 是局部变量地址 或者说堆栈地址 ebp-0x04 到 ebp-0x08 应该是把参数的值复制到局部变量里 压进去准备运算 这里压的是 ebp-0x08 而不是 ebp-0x04 变量是在堆栈中的运算的所以是后进先出(或者是倒着保存)
' mov edx, dword [ebp+0x0C] 这里取出地址也是 和堆栈那个相反的 是把0x0c给edx 而不是 0x08给edx
' mov eax, dword [ebp+0x08]
' mov esp, ebp 以下平衡堆栈
' pop ebp
' retn 0x0010 这里两个双精度参数一个双精度 长度为8字节 8+8 16 所以 retn 0x10 也就是十进制的16

易如意网络验证1.7内测版
win10开机自启拨号

同类资源