下你所需,载你所想!
汇集开发技术源码资料

堆栈xx两个双精度汇编加法做对比

:1.853KB :1 :2020-03-01 20:26:58

部分简介

置入代码 ({ 221, 69, 8, 220, 69, 16, 221, 93, 8, 139, 85, 12, 139, 69, 8, 137, 236, 93, 194, 16, 0 })
返回 (参_加数 + 参_被加数) ' 这里不会执行用来标注看的
' //push ebp
' //mov ebp, esp
' //sub esp, 0x00000008
' 以上三行是易语言自行添加上去的
' 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

堆栈xx两个双精度汇编加法做对比

热门推荐

相关文章