stack-pointer

    0热度

    1回答

    对于作业,我应该读取一个文件并对字符串进行排序。为此,我使用了一种选择排序,它可以工作。现在,在它调用selSort函数之后,它就崩溃了。我已经跑出想法来解决这个问题,任何人都可以帮我一把吗? // 2_8.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include <

    2热度

    1回答

    为什么扩展堆栈指针(ESP)在每个PUSH或POP操作中跳转1h?

    2热度

    1回答

    我正在使用OpenCV库,Boost库和我从这个LINK下载的一段代码编写应用程序。我已创建了Thunk32相同的解决方案下的一个项目,我有以下文件: MainProject.cpp #include "stdafx.h" int main(int argc, char** argv) { IplImage *img = cvLoadImage("C:/Users/Nicolas/

    1热度

    4回答

    那么,堆栈如何工作?例如,指令: push ax 等于: sub sp, 4 mov sp, ax 其中Sp是堆栈指针。是对的吗? 我的问题是 - 如果稍后我将其更改为完全不同的值,那么从sp寄存器中减去4是什么点?

    26热度

    2回答

    鉴于这一段代码: swap: push ebp ; back up the base pointer, mov ebp, esp ; push the context of the registers on the stack push eax push ebx push ecx push ed

    9热度

    5回答

    例如,如果我推斧是[SP]指向我的价值斧或斧头后的单词?它也不同于实模式到保护模式?我问这个问题是因为装配艺术书中的说明和解释是sp指向上次推送的数据,并且在该页面上OSDev Wiki - Stack表示它指向上次推送的数据之后的空白字。

    -1热度

    2回答

    我正在浏览C代码,我必须弄清楚特定程序跟踪中使用的寄存器数量。每遇到push或pop命令,代码都会忽略存储ESP寄存器。我还提到了X86指令,它写在那里“ESP,堆栈指针,不应该使用”。

    1热度

    2回答

    我试图在程序集中编写一个函数,它将内存块设置为指定的值,就像memset()一样,但是,当我从堆栈中获取第三个参数时(它使用fastcall调用约定) ,寄存器ECX获得了一些乱码。 通过使用内联汇编将代码放入Visual Studio中,我看到ESP在函数调用时发生了显着变化。 前两个论点正在被放入ECX和EDX中,没有任何问题,这只是第三个引起麻烦的论点。 我知道代码工作的内存块充满了正确的值

    2热度

    1回答

    void main(){ int c; c = function(1, 2); } int function(int a, int b){ char buf[10]; a = a+b; return a; } 汇编代码: main: 08048394: push %ebp 08048395: mov %esp,%ebp

    2热度

    2回答

    我有一个简单的代码: void func() { func2(); } 我省略FUNC2的执行情况和主要因为它们是不相关的。然后我用WinDBG的追查组件,下面是汇编代码的输出执行“FUNC2()”时:在执行 eax=cccccccc ebx=7ffd6000 ecx=00000000 edx=00000001 esi=01faf760 edi=0012ff68 eip=004