一个汇编小demo的详解

本文通过一个简单的汇编代码示例,详细解释了如何将程序中的变量映射到汇编语言中,尤其是mov指令的用法。文中提到,xp和y的内存地址分别为8(%ebp)和12(%ebp),并通过汇编指令将它们的值分别传递给%edx、%eax和%ecx寄存器。最后,讨论了如何用汇编更新内存中的变量值,感叹汇编语言学习的抽象与挑战。
摘要由CSDN通过智能技术生成

<span style="font-size: 18px;">C语言代码如下:</span>
int exchange(int *xp, int y)
{
	int x = *xp;
        *xp = y;
	return x;
}

今天主要还是看了mov的指令,所以就根据程序内的两个变量转化的操作谈一下映射到汇编语言的情况。。。。。不得不说,今天刚刚一脚踏进汇编的水里,就有一种随时可能会被淹死的感觉。。。。(太抽象了有木有)


汇编代码如下

xp at %ebp + 8

y  at %ebp + 12

这是汇编代码里面的两条注释,意思就是说xp 和y 这两个变量是分别存在于这两个内存地址中的,其实这两条如果变为寻址形式的话,应该是变为8(%ebp) 12(%ebp),这两个内容和%ebp + 8, %ebp +12应该是一样的。都是两个变量的地址

movl  8(%ebp),    %edx
movl   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值