4 Star 42 Fork 26

孟宁/linuxkernel

加入 Gitee
与超过 1400万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
pushl-popl.c 717 Bytes
一键复制 编辑 原始数据 按行查看 历史
mengning 提交于 2020-04-25 19:35 +08:00 . assembly example code
#include <stdio.h>
int main()
{
void * val1 = 0;
void * val2 = 0;
void * val3 = 0;
printf("val1:%p,val2:%p,val3:%p\n",val1,val2,val3);
asm volatile(
"movl $0,%%eax\n\t" /* clear %eax to 0 */
"movl %%esp,%1\n\t" /* val1 = %esp */
"pushl %%esp\n\t" /* pushl %esp */
"movl (%%esp),%2\n\t" /* val2 = (%esp) */
"popl %%esp\n\t" /* esp = (%esp) */
"movl %%esp,%0\n\t" /* val3 = %esp */
: "=m" (val3), /* output =m mean only write output memory variable */
"=c" (val1),"=d" (val2) /* input c or d mean %ecx/%edx */
:
);
printf("val1:%p,val2:%p,val3:%p\n",val1,val2,val3);
return 0;
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/mengning997/linuxkernel.git
git@gitee.com:mengning997/linuxkernel.git
mengning997
linuxkernel
linuxkernel
master

搜索帮助