Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 是否可以使用添加sp等恢复堆栈_C_Assembly_Stack - Fatal编程技术网

C 是否可以使用添加sp等恢复堆栈

C 是否可以使用添加sp等恢复堆栈,c,assembly,stack,C,Assembly,Stack,在我的程序中,我在堆栈上推送一些值 for (i=0;i<i2;i++) { _asm { mov eax,i // i here is an (int) push eax } } 只要算术正确,那就行了。我的老毛病是在这类事情上一个接一个地发作 您还可以查看和说明来执行类似操作。不完全确定它是否有效,但最后一个操作似乎只需LEA ESP、[ESP+4*EAX]即可完成。保存一个额外

在我的程序中,我在堆栈上推送一些值

for (i=0;i<i2;i++)
    { 
    _asm
       {  
       mov eax,i   // i here is an (int)
       push eax 
       }
    }       

只要算术正确,那就行了。我的老毛病是在这类事情上一个接一个地发作


您还可以查看和说明来执行类似操作。

不完全确定它是否有效,但最后一个操作似乎只需
LEA ESP、[ESP+4*EAX]
即可完成。保存一个额外的乘法,并保持您的条件标志不变

for (i=0;i<i2;i++)
    { 
    _asm
       {  
       pop eax  // eax in not used later
       }
    }       
i=i2*sizeof(int);
_asm
   {  
   add sp,i
   }