5200小说网

手机浏览器扫描二维码访问

第307部分(第1页)

关于硬件,我们业余选手可以不用知道那么多,只要知道:cpu会执行我们的一些命令,我们的命令是存在“存储器”里的0101010110101001010…这样的数字来代表。

作为常识我们知道,计算机只认识0和1(至少你现在知道了),那么我们就来看一下它是如何运用0和1来工作的。

汇编:

请注意为了方便讲解我就自己创造例子了,可能和实际情况有出入,但是更容易帮助理解。先看一下这一行代码:

00000001 00001100 00001010

看不懂?普通人类当然看不懂,但是机器看得懂,而且机器就只能看懂这种形式的信息。这个叫做机器语言,也是二进制码。二进制码是构成如今计算机世界的基础,我们电脑里的任何文件、应用程序归根结底的都是以二进制码的形式存在的。比如:我们常常能够在电脑的文件夹里看到这样一个文件夹:

这其中“bin”就是单词“binary”的缩写,意思是二进制文件。打开bin文件夹,xe和。dll文件。对于我们来说,。exe就是一个应用程序嘛,比如说:xe、xe。

大家难道没有好奇过:为什么应用程序的的后缀是“exe”呢?原因:“exe”是英文词组“executable file”的缩写,意思就是可执行文件。“可执行文件”的意思是:可以被cpu执行的文件。我们前面说过,cpu只能执行0101001这样的指令。所以“可执行文件”其实就是这种指令的集合,也就是是一堆二进制码 “00001111 01010011 00100110 00001111 01010011 ……”。所以它才会常常被放在ry)文件夹里。(有没有发现,那些曾经我们看不懂的文件夹结构、文件名后缀,其实设计得都是有道理的)

我们玩的每一个游戏,它们的本质都是这样的二进制文件。所以编写一个游戏,其实最终最本质就是编写出这样的文件:0101010101110010101010101001010101……可是……

我知道这也太特么为难人了!鬼看得懂这些01是什么意思啊!(鬼:我也看不懂啊~)但没有办法,现代的计算机只能识别这种简单的机器语言。(即便是量子计算机也是玩01这样的量子比特) 为了让这些机器语言更容易被我们人类所理解,先驱们发明了汇编语言。bly language”)但其实汇编语言很简单,有了汇编,我就能跟你解释前面的0011是怎么回事了。再来看之前的那行代码:

00000001 00001100 00001010

请注意这不是一串随便瞎写的0和1,它是有规律的!你们看,以八个0或1为一组,每组中间有个空格。e),每一个0或者1,我们叫做一个“比特”(bit)。第一个字节:00000001,假设我们规定,它代表一个命令:加法(add)。我们再规定,如果cpu遇到“加法”命令,它就把后面两个字节相加,把结果存到前一个字节所在的地方。于是我们的cpu就能够计算加法了。规则是给它这三个数:

第一个是表示加法命令的“00000001”,第二个a和第三个b是两个加数,每次都不同,所以我用x表示那些比特位。同样的道理我们能够制定出减法命令、乘法命令、复制命令等等。比如复制命令:我们规定“00001111”代表复制命令,如果cpu遇到“00001111”,它就把后面第二个字节的数据,复制到后面第一个字节的数据所表示的位置上(注意这些字节里的二进制数不仅可以当数字用,也可以当命令用,也可以用来表示储存位置)。于是我们就有了复制数据的功能了。

这些功能,都是cpu中的逻辑电路为我们提供的,我们只需要发送规定好的指令便能使用这些功能。注意,指令的本质是一串0和1代表的信息,但是我们很难去记忆和区分1101这样的数字,所以我们就用“add”代表00000001(加法指令),用“py”代表00001111(复制指令)。在英文里本来就是加和复制的意思,这就很好记。而“add”、“py”等这些指令集合起来就形成了汇编语言。它实际上就是把机器语言(一串0和1)直译成了英文单词。一般cpu认识的指令不多,就那么十几个(加上变种一般也就几十个)。所以汇编语言中的指令一一对应也不多,大致分为三种:

数据传输类:复制、加载、存储……算数逻辑类:布尔运算、加法运算、自加运算……控制类:转移、停止……

就这么几个指令能干啥?你别说,我还真有办法能让你亲自见证一下,就这么几个指令,可以让cpu干些什么事。achine》这个小游戏。然后开始玩吧。我已经让群友们验证过了,不管有没有学过编程都可以玩几下。而游戏的主体内容,其实就是以一种有趣的方式在写汇编代码。在过关这个游戏之后,你会发现你自己用这几个最简单的指令,让计算机实现了一些简单的功能,诸如:比较两个数字的大小、判断一个数字的正负、让计算机数数、用加法实现了乘法运算、从一组数中找到最小的数……如果你在游戏里过五关斩六将实现了这些功能,那么你就相当于解决了上个世纪计算机科学早期那些先驱们所面对的问题。给自己一个奖励吧,点击文章末尾的“赏”就会看到编程学习大礼包!额,你说你没有通关?没关系,最后几关是比较难,而且这个游戏只是为了让你体验一下汇编编程的感觉。

现在你会发现,汇编语言其实没有多复杂,而且比起那些0011的代码,真是太好识别了。但是那还不够,比如我要计算一个:

*z++p…2

这个自然的表达式人人都能看懂吧?但是用汇编语言写出来就不那么好看了:

mov  x;  y

mul  y;  z

div  q;  10。5

add  y;  q

sub  p;  2

add  y;  p

一眼看上去不知道是在干嘛。而且汇编语言也不够“自然”,比如我要做一个赋值操作:

上面这种写法很自然,我们在学数学的时候就是这么写的,但是在汇编语言中它是这么写的:

mov  x, y

直译就是:把y移动到x的存储位置(这是计算机硬件能够实现的操作)。再比如:

if  x

这几行命令,我们用自然语言就能读懂它在干嘛:比较两个数的大小,然后把大的数赋值给小的数。用汇编语言写就是这样:

cmp x;y

jle lesscase

jmp skipcase

lesscase:

放学后推理社  斗破之传奇再起  我的神话联盟  真是见鬼了  幻想之电影世界大冒险  镇墓兽  茅山禁咒  海贼牌皇  魔法与现实交织的异世界  湘西秘术闯都市  最强狂暴捉鬼系统  末日丧尸进化系统  十面危机我是僵尸  橘猫主神的铲屎日常  星战风暴  盗墓鬼城  我老板是阎王  诸天召唤宝典  我跟师兄去捉鬼  诡案异象录  

热门小说推荐
神血龙帝

神血龙帝

孕育远古神血的洪铮,天生王者,却被青梅竹马的恋人联合他人陷害致死,神血被剥夺。十年后,他原地复活,亿万龙力加身,蜕变龙身,孕育黄金神骨,再次无敌天下!昔日的敌人,统统拍死!犯我神威者,一律轰杀!诸天万界,唯我独尊,万古龙帝,主宰八荒!...

爹地今天求婚了吗

爹地今天求婚了吗

被继姐陷害失去第一次,母亲遭活活气死,五年后,带着一双龙凤胎重回宁安市,姜暖发誓要抱最粗的腿,这宁安市首富霍北辰的腿就挺有钱,哦不,粗。可那洁癖的模样怎么跟她儿砸一模一样?一路虐渣,青云直上,姜暖恣意潇洒,光芒万丈。姜小姐,很多人都传霍总是你的金主?姜暖扯唇普通朋友。霍北辰将女人纳入怀对,晚上睡觉得替她盖被子的那种普通朋友。...

重生投资之王

重生投资之王

苏寒重生在2008年,这个遍地是黄金的年代,动动手指,互联网,p2p,房地产,美女金钱似乎唾手可得,一不小心他就成了投资界大佬。...

我的体内有尸王

我的体内有尸王

丧尸出现后的第五天,我被强行赶出了宿舍楼,意外变成了介于丧尸和人类之间的存在,救生之路,就此开始。...

超凡世界

超凡世界

超凡世界由作者资产暴增创作全本作品该小说情节跌宕起伏扣人心弦是一本难得的情节与文笔俱佳的好书919言情小说免费提供超凡世界全文无弹窗的纯文字在线阅读。...

每日热搜小说推荐