菜鸟的汇编语言学习笔记
计算机发展初期,人们都是用机器语言进行编程的,这也是人们能实现编程控制计算机的最低级别。那么机器语言是什么样子的呢?就是用0和1组成的一个串(形如011010101),cpu的每一个功能对应着一个串,cpu得到这样的串就去执行对应的功能,我们把这样的串叫做一条机器指令。cpu提供的所有功能,这些功能对应的所有串,我们称之为这种cpu的指令集。这里我们就知道指令集是什么东东了。cpu提供的功能的个数是一定的,但是0和1组成的串却有非常多的组合。所以并不是任意一个串都可以让cpu去执行特定的功能,只有指令集中的串才可以。
每一种cpu,由于硬件设计和内部结构的不同,对应的指令集也是不同的。也就是说,每种cpu都有专属于自己的一套指令集。这就好比两个人,一个说英语,一个说法语,虽然他们的语言都是由相同的26个字母组成的(就像不同cpu的指令集都是由0和1组成的),但是同样的一个单词,他们两人可能理解成不同的意思。同样的,他们要表达同一个意思,也可能用不一样的单词。由此可见,用机器语言编写的程序是不可移植的。什么叫移植?就是你用cpu-A的指令集编写一个程序,可以在cpu-A上成功运行,于是你想不改动该程序,然后在cpu-B上同样运行成功,实现相同的功能。想想也是不可能,就好比你用英语写了一篇文章,拿去让只会法语的人读,你说他会读懂吗?
早期用机器语言编写程序的程序猿,不能不称之为神。你要记住cpu提供的所有的功能,以及每个功能对应的一串二进制指令,然后熟练的使用。万一哪个地方0被错误写成了1,你还要在万千个0和1中把它找出来。想想都有点不可思议。关键是万一换了其他的cpu,你还要重复上面的过程重新编写你的程序。
注:其实还有更低级别的指令,叫做微指令,每条机器指令都被翻译成几条微指令然后让cpu去执行。至于微指令,不用去了解,太底层了,而且是cpu生产商的机密(就好比用Iphone6,我们能使用Iphone6的各种功能,但是我们不知道这些功能是如何实现的,这就是商业机密,指令集就是一个功能集合,我们用指令集去实现自己想要的功能,但是这些功能如何实现的,就是微指令的事,人家不会告诉你的)。我们只要知道cpu中固化了一套自己的指令集就可以了。至于什么是固化,我也不懂,貌似是涉及硬件的东西,但是你只要明白,不是我指令集里的东西我不认。
讲个很久以前的笑话,说有个人很牛逼,有天发现自己的驱动软件坏掉了,于是他找来一张空光盘,拿起一根细针,疯狂得戳呀,一个小时过去了,塞入光盘,驱动安装成功。这虽然是夸张,但是由一点是非常正确的,不管你用什么语言编写的程序,最终都会被翻译成机器语言在机器上执行,没办法,谁让机器只认0和1呢。
菜鸟的汇编语言学习笔记相关推荐
- 32位汇编语言学习笔记(45)--测试简单文件操作接口(完)
这是<Assembly Language step by step programming with linux>书中的最后一个程序,也是全书中的最复杂的一个程序. 首先看一下这个程 ...
- MIPS汇编语言学习笔记23:if 语句分支指令
C语言 #include<stdio.h> int main() {int i = 3;if (i < 5){printf("yes!\n");}else{pri ...
- MIPS汇编语言学习笔记07:打印双精度浮点数
课程原视频: https://www.bilibili.com/video/BV19J411y7pA?p=7 程序功能: 设定两个双精度浮点型数据,将其相加后打印输出. 代码: .datamyDoub ...
- windows下32位汇编语言学习笔记
windows下32位汇编语言学习笔记 第一章 第一章 背景知识 80x86处理器的存储器 4个数据寄存器 EAX,EBX,ECX,EDX EAX寄存器 所有API函数的返回值都保存在EAX里,注意 ...
- win32汇编语言学习笔记(三)
汇编语言学习笔记(三) CH3.Windows汇编基础 .386 .model flat,stdcall option casemap:none 定义程序使用的指令集.工作模式 相应的还有:.8086 ...
- MIPS汇编语言学习笔记11:整数减法 (mult方法)
任务:整数相乘,并输出打印. 代码: .dataintA: .word 5intB: .word 2 .textli $v0, 1lw $a1, intAlw $a2, intBmult $a1, $ ...
- Linux下汇编语言学习笔记12 ---
这是17年暑假学习Linux汇编语言的笔记记录,参考书目为清华大学出版社 Jeff Duntemann著 梁晓辉译<汇编语言基于Linux环境>的书,喜欢看原版书的同学可以看<Ass ...
- Linux下汇编语言学习笔记65 ---
这是17年暑假学习Linux汇编语言的笔记记录,参考书目为清华大学出版社 Jeff Duntemann著 梁晓辉译<汇编语言基于Linux环境>的书,喜欢看原版书的同学可以看<Ass ...
- Linux下汇编语言学习笔记13 ---
这是17年暑假学习Linux汇编语言的笔记记录,参考书目为清华大学出版社 Jeff Duntemann著 梁晓辉译<汇编语言基于Linux环境>的书,喜欢看原版书的同学可以看<Ass ...
最新文章
- 项目交接文档_会计实操||会计人员交接范例
- mysql关于or的索引问题
- 【Java24】健康项目:环境搭建,预约管理(检查项和检查组管理)
- Java对象在Java虚拟机的创建过程
- 《c语言从入门到精通》看书笔记——第16章 网络套接字编程(上)——网络
- 深度优先搜索——单词接龙(洛谷 P1019)
- 宝德服务器硬盘报警,宝德“超人”系列PR4880G
- 理想汽车2021年Q4盈利2.955亿元 CTO王凯离职
- Python3 爬虫之 Scrapy 核心功能实现(二)
- 【codevs3945】 完美拓印
- App 抓包-Fiddler简单使用教程
- 随机信号分析实验(matlab仿真实验)
- JavaScript常见的六种继承方式
- 探索式测试方法的实践
- 英语口语练习二十二之I'd strongly recommend that... (我强烈建议……)用法
- 张驰课堂:六西格玛中的Minitab软件,到底有多重要
- Window拷贝文件到Ubuntu虚拟机
- 上位机软件开发流程是怎样的?上位机开发软件分享
- C++ 模板与泛型详解
- idea软件调整字体大小和行间距
热门文章
- python用户输入q退出,python - 循环输入,从文件列表中输出数据,如果输入等于q或退出,则退出 - SO中文参考 - www.soinside.com...
- JDBC学习心得(一)
- 网上打印店打印一本标书多少钱?哪个网上打印平台可打印标书
- python成绩统计系统xlwings_科学网—利用Python扩展Excel能力的xlwings库使用体会 - 丁祥欢的博文...
- Day02-简单加法(addition)
- 工程管理系统企业工程管理系统源码简介
- dscp值_ToS与DSCP对照表
- MLK | 特征工程系统化干货笔记+代码了解一下(中)
- 笔试面试找工作个人总结(持续更新)
- Bayesian statistics