深入理解计算机系统 第三章 程序的机器级表示 Part2 第二遍

 

第一遍对应笔记链接 https://www.cnblogs.com/stone94/p/9943779.html

 

本章汇编代码中常出现的几个指令及其含义

1、push

操作数的个数:1

将操作数(一般是寄存器)的值压入栈中,由于栈向下生长,所以这时栈顶指针会减小一点

2、move

操作数的个数:2

第一个操作数是源操作数,第二个操作数是目的操作数,该指令将源操作数的值赋给目的操作数

3、call

操作数的个数:1

调用某个方法,栈的变化没有完全弄明白

4、pop

操作数的个数:1

将栈顶元素赋给操作数,同时从栈顶弹出该元素,栈顶指针增加一定的值

5、ret

当前方法结束,返回

 

这里说到的两种抽象看不大懂

“计算机系统使用了多种不同形式的抽象,利用更简单的抽象模型来隐藏实现的细节,对于机器级编程来说,其中两种抽象尤为重要,第一种是由指令集体系结构或指令集架构(ISA)来定义机器级程序的格式和行为,它定义了处理器状态、指令的格式,以及每条指令对状态的影响。大多数 ISA ,包括 x86-64,将程序的行为描述成好像每条指令都是按顺序执行的,一条指令结束后,下一条再开始,处理器的硬件远比描述的惊喜复杂,它们并发地执行许多指令,但是可以采取措施保证整体行为与 ISA 指定的顺序执行的行为完全一致。第二种抽象是,机器级程序使用的内存地址是虚拟地址,提供的内存模型看上去是一个非常大的字节数组”

 

转载于:https://www.cnblogs.com/stone94/p/11605824.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值