就普通的操作而已分配栈空间仅仅是一个指针操作, 在汇编中的操作如下,这样就分配了6个字节的空间1sub esp, 0x06利用内存池来申请堆空间在性能上才有可能在性能赶上栈。 而且申请堆的空间很可能在cache上。对内存分配需要根据你的申请空间大小,内存碎片情况等的影响,性能上比栈差一些。栈如何获得...
分类:
其他好文 时间:
2015-07-06 19:19:42
阅读次数:
147
最近调试用到了安信可的ESP-01模块,终于打通了编译下载调试的整个通道,有一些细节需要记录,方便后续的开发工作。...
分类:
其他好文 时间:
2015-07-06 17:52:05
阅读次数:
379
反汇编一个简单的C程序并分析C 源码:int g(int x)
{
return x+1;
}int f(int x)
{
return g(x);
}int main(void)
{
return f(2) + 3;
}
汇编源码:1 g:
2 pushl %ebp
3 movl %esp, %ebp
4 movl 8(%ebp), %eax
5...
分类:
其他好文 时间:
2015-07-04 09:42:05
阅读次数:
132
①8个32-bit寄存器: %eax 一般用作累加器; %ebx 一般用作基址寄存器(Base); %ecx 一般用来计数(Count); %edx 一般用来存放数据(Data); %esp 一般用作堆栈指针(Stack Pointer); %ebp 一般用作基址指针(Base Poin...
分类:
其他好文 时间:
2015-06-30 14:26:49
阅读次数:
122
esp是栈指针,是cpu机制决定的,push、pop指令会自动调整esp的值; ebp只是存取某时刻的esp,这个时刻就是进入一个函数内后,cpu会将esp的值赋给ebp,此时就可以通过ebp对栈进行操作,比如获取函数参数,局部变量等,实际上使用esp也可以; 既然使用esp也可以,那么为什么要...
分类:
其他好文 时间:
2015-06-28 20:01:19
阅读次数:
142
问题:Run-Time Check Failure #0 - The value of ESP was not properly saved across a function call. This is usually a result of calling a function declared...
分类:
其他好文 时间:
2015-06-16 14:17:39
阅读次数:
137
??
llvm JIT强制保留frame pointer(栈帧)
搬运自我的百度空间
不优化时,在每个函数开头都会把ebp入栈,这样可以方便调试时栈回溯(Stack Trace)等。push ebp的这个动作称为创建栈桢
但是llvm默认情况下,如果函数中没有alloca等栈操作,就会把栈桢动作优化掉(因为没有用到esp和ebp),这样调试时无法...
分类:
其他好文 时间:
2015-06-14 09:27:43
阅读次数:
140
00401010 push ebp00401011 mov ebp,esp00401013 sub esp,50h00401016 push ebx00401017 push esi00401018 p...
分类:
其他好文 时间:
2015-06-12 17:06:41
阅读次数:
108
之前看到houjy527发帖说入手了一台minipresso胶囊版,想起来这货是个好玩具,出差旅行必备佳品(可惜我从没出过差)minipresso设计很赞,简直不能更方便了~下面是houjy527君的图(侵删):作为可以萃取ESP的东东,≈500软妹币(从HK)入手的价格并不算高,官网49刀(不算运...
分类:
其他好文 时间:
2015-06-10 11:51:16
阅读次数:
1183
引自:http://blog.csdn.net/feixiaoxing/article/details/6838773函数调用主要依靠ebp和esp的堆栈互动来实现的。那么递归呢,最主要的特色就是函数自己调用自己。如果一个函数调用的是自己本身,那么这个函数就是递归函数。 我们可以看一下普通函数的调用...
分类:
编程语言 时间:
2015-06-08 13:10:50
阅读次数:
144