第一遍对应笔记链接 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 指定的顺序执行的行为完全一致。第二种抽象是,机器级程序使用的内存地址是虚拟地址,提供的内存模型看上去是一个非常大的字节数组”

# 待了解

1、无论一个方法被运行多少次,它的源码、汇编代码和二进制代码都只有一份吗?都是存在哪里的?操作系统最终是,每次需要的时候,拿二进制代码去协调内存和 CPU 操作数据吗?

2、计算机有多核,多线程实际并发(真正同时运行)的时候, 寄存器会有对应的多份吗?如果没有,那一份寄存器怎么供多核同时使用?

最新文章

  1. Python3实现最小堆建堆算法
  2. NOIP2012借教室[线段树|离线 差分 二分答案]
  3. 【PHP面向对象(OOP)编程入门教程】12.重载新的方法(parent::)
  4. java swing 中的FileDialog
  5. python下的orm基本操作(1)--Mysql下的CRUD简单操作(含源码DEMO)
  6. Nodejs的mysql模块学习(一)
  7. 深入理解javascript闭包(一)
  8. 中国(北方)大学生程序设计训练赛(第二周) (A B D G)
  9. Html5学习之旅-html5的留言记事本开发(17)
  10. C++ 参数传值 与 传引用
  11. js总结:JavaScript入门
  12. Debian下配置防火墙iptables
  13. loj #116. 有源汇有上下界最大流
  14. Physics for Game Programmers (Grant Palmer 著)
  15. <亲测>CentOS7yum安装PHP7.2
  16. 一步一步学习IdentityServer4 (2) 开始一个简单的事例
  17. ConcurrentHashMap之实现细节
  18. HDU1735 字数统计
  19. ssh 远程拷贝文件到本地
  20. 一篇博文将JavaScript尽收眼底

热门文章

  1. 终端 10X 工作法(一)
  2. Flask学习总结
  3. jmeter打印变量的三种方式
  4. vue 自定义侧边栏 递归无限子级菜单
  5. 百万年薪python之路 -- 模块
  6. VUE图片剪辑插件 React图片剪辑插件
  7. WinFrom中音频播放
  8. 第八篇 Flask中的蓝图
  9. spring @Value("${name}")使用
  10. 【xinsir】分享一个查找文件的脚手架