随笔分类 - 汇编
摘要:对于一个正在学数据结构的菜鸟,递归是心中抹不掉的痛。今天决定从汇编层面分析一下其过程。构造以下代码#include int f(int p){ static int k = 0; if (p == 1) return 1; else return f(p...
阅读全文
摘要:正如前文所说,函数返回值会被存入EAX等寄存器,然后返回后由程序从中读取。但如果返回值较大呢? 开始博主打算用double测试,后来发现这个要用到x87这套完全不同的指令集。只好用结构体了。构造C程序 #include struct myrd{ int i; int j; int ...
阅读全文
摘要:上文讲到call之后,程序发生跳转。之后因为博主设错了一个断点,结果折腾了整整一周,真是欲哭无泪。 这才是正确的断点设置啊TAT。这是call之后的语句。 01281427 83 C4 08 add esp,8 执行call之后ESP的值减少4。在memory窗体中查看ESP的值。 由小端机存储可只栈顶正是函数的返回地址。 012813C0 55 ...
阅读全文
摘要:构造以下C程序并在合适位置插入breakpoints 在Visual Studio 2015 CTP6对其反汇编。 下面来分析 z = add(1, 2); 009C170E 6A 02 push 2 int z; z = add(1, 2); 009C1710 6A 01 ...
阅读全文

浙公网安备 33010602011771号