Day 1 序言及基本运算元件

我很早就开始接触组合语言,但没有学太久,就没有再碰了,当初学组合语言的原因,是觉得组合语言是人与机器沟通最直接的方式,因为用电脑的语言直接告诉电脑是最方便的,免去了一堆繁琐的编译步骤,这样不就是最直接的方式吗?

但是,我後来发现,我错了,电脑是二进位的思考,可是人类思考可能是亿万以上的位元在思考的,光我们说一个『请』字,或许大家觉得一点都不困难,可是那是因为人类的运算方式已经是非常非常…巨大了,甚至透过数以难计的神经位元在进行运算,从接收外部讯息开始,到处理结束,乃至从口中说出『请』时,中间的流程分解,其实是非常精细且复杂的,绝对不是我们可以想像到的复杂。

换个角度来想,若以电脑的角度来看,电脑是用二进位的思考来想,你要几亿个二进位才能产出一个『请』字? 更何况,还要考量到外部环境不同,还要加以变化,从这个观点来看,我们要把简单的人类思考,去拆解甚至打碎到极碎的方式,让电脑去了解你所写的指令,这实在太困难了,所以,组合语言就是这样被我束诸高阁了!

不过,多年以後,或许有点想重拾年轻时的感觉,所以,就试着写看看吧! 最後,我如果写错,请多多包涵~~我尽力就是了!/images/emoticon/emoticon28.gif

开始吧~~


我们在开始了解ARM架构时,先要了解ARM最基本的行为模式,就是处理元件(processing element,简称PE),处理元件的意思就是去告知在接受讯息之後,该怎麽去处理相关的资讯,简单的说,就是当你接收到某种讯息时,你的每个神经系统会马上通知大脑,这个行为该怎麽应对。

这个PE是可以多个存在的,你可以选择这麽做,也可以选择不要这样做,主要还是需要CPU做最後决定,所以ARM的行为模式不一定是会接受PE而执行,就如同我们接受到讯息,大脑也不一定会接受一样。

接着我们也要了解,当讯息进来时後,有可能是一大坨的进来,资料进来时,就要有一个资料池(Data pool),然後,我们就开始从这个池子里面去捞出可以用的资讯,下指令来处理这些讯息,也就是初步的筛选,然後,这些可用的讯息会先放在暂存区里面,然後设定编码之後,根据演算的方式,哪些编号可以用的,就让这些资讯传向CPU。这个过程里面就有很多种模式,例如:单指令流多资料流(Single Instruction Multiple Data,缩写:SIMD),这个就是目前ARMv8所使用的指令集的处理模式。不管是32位元或64位元,处理模式大至上就是循着SIMD模式来处理。

维基百科上面有简单的定义:

单指令流多资料流是一种采用一个控制器来控制多个处理器,同时对一组资料中的每一个分别执行相同的操作从而实现空间上的并列性的技术。 在微处理器中,单指令流多资料流技术则是一个控制器控制多个平行的处理微元,例如Intel的MMX或SSE,以及AMD的3D Now!指令集。


<<:  [Day11] 智慧指标

>>:  Day1 甚麽是框架?

[第十九只羊] 迷雾森林舞会XIII 设定form 绑定dom 同步房间(单押)

天亮了 前晚是1号玩家死亡 关於迷雾森林故事 反指标 洛神:2号玩家请继续发言 2号:1号是猎人他带...

启动

当我在犹豫这季是否参赛时,起了不少的犹豫。主要是今年并没有酝酿出一个真正打从内心想要发展的特定主题,...

基本操作 - 历史资讯

根据官方说明,因为历史资料的查询蛮耗资源的,有可能会拖慢系统的速度,所以官方不建议使用,而且有每5秒...

予焦啦!检验核心映像档:开机流程、OpenSBI 惯例、ELF 浅谈

本节是以 Golang 上游 1a708bcf1d17171056a42ec1597ca8848c...

Day 22 云端上的缓存达人-ElastiCache

为了更有效提取资料,AWS也提供了资料缓存的服务,一起探究看看吧! 1. ElastiCache的应...