
汇编
jphaoren
这个作者很懒,什么都没留下…
展开
-
详解LEA指令
<br />比如你用local在栈上定义了一个局部变量LocalVar,你知道实际的指令是什么么?一般都差不多像下面的样子:<br />push ebp <br />mov esp, ebp <br />sub esp, 4 <br />现在栈上就有了4各字节的空间,这就是你的局部变量。 <br />接下来,你执行mov LocalVar, 4,那么实际的指令又是什么?是这样:<br />mov dword ptr [ebp-4], 4<br />转载 2011-04-13 10:36:00 · 2819 阅读 · 0 评论 -
检测不了的错误(2) --- 分析
为什么编译和运行时都不能检测到这个问题呢. 为什么一个空指针还能够调用对象的成员函数呢? 我们要看看汇编代码.MyClass::Foo() 其实是一个全局函数, 在符号表中的名字是 "_ZN7MyClass2FooEv". 所以调用时并不需要通过对象指针. 不过在调用这个函数时,会传递对象指针进去.函数的定义:.globl _ZN7MyClass3FooEv .type _ZN7MyClass3FooEv, @function_ZN7MyClass3FooE转载 2011-04-13 20:22:00 · 969 阅读 · 0 评论 -
VS2008反汇编小解
<br />了解反汇编的一些小知识对于我们在开发软件时进行编程与调试大有好处,下面以VS2008环境下的VC++简单介绍一下反汇编的一些小东西!如果有些解释有问题的地方,希望大家能够指出。<br />1、新建简单的VC控制台应用程序(对此熟悉的同学可以略过)<br />A、打开Microsoft Visual Studio 2008,选择主菜单“File”<br />B、选择子菜单“New”下面的“Project”,打开“New Project”对话框。<br />C、左边选择Visual C++下的win转载 2011-04-29 20:23:00 · 8146 阅读 · 0 评论 -
不使用调试器查看堆栈的调用情况(CallTrace)
转自:http://www.xue5.com/itedu/200707/127638.html程序不大,调了三个小时,自己有必要在强化下对指针的理解:(原理:函数调用的时候会建立栈帧,其大致存放如下压栈传入的参数2压栈传入的参数1------------------------函数返回时的地址------------------------栈帧---------转载 2011-04-13 20:21:00 · 1856 阅读 · 0 评论 -
常用代码段 rep movsw/rep movsw
转自:http://apps.hi.baidu.com/share/detail/32932237移动代码段:rep movsw mov ax,#BOOTSEG mov ds,ax mov ax,#INITSEG mov es,a转载 2011-11-09 23:42:43 · 3605 阅读 · 0 评论