
AArch64教程
文章平均质量分 89
阿达King哥
如何看透生活的本质却依然热爱生活
展开
-
AArch64教程第六章
AArch64教程第六章 Nov 27, 2016 • Roger Ferrer Ibáñez • AArch64 到目前为止我们知道如何做一些计算和访问内存。今天我们将学习怎样修改我们程序的控制流。 隐式序列 几乎每个人都希望看到的指令都像我们前面看到的一样,一个接一个执行。这种方式是最基本的,我们称之为隐式序列:一个指令执行完毕之后,另一个指令接着执行。这看起来很明显。 但是,如果我们想去改变这种隐式序列怎么办?比如选择性的执行一段指令,甚至,我们去执行一段依赖某个条件的指令。 程序生活在哪里? ins翻译 2021-09-26 17:19:54 · 1182 阅读 · 0 评论 -
AArch64教程第一章
AArch64教程第一章 AArch64是一个新的64位模式,它是ARMv8架构下的一部分,它于2011年随着ARM发布。它被逐步部署于智能手机和服务器。所以我认为现在学习一点关于此架构的知识是比较好的。 硬件 目前,有ARMv6/ARMv7的单板电脑是比较容易获得的,其中最流行的一个选择是树莓派。 相反,支持64位ARMv8模式的单板电脑就没有那么多了,但是它们最近也慢慢变得流行了起来。例如,Pine64,ODROID-C2, Dragonboard 410c, 等等。它们中的任何一种都可以做64位开发,翻译 2021-09-02 09:00:45 · 1543 阅读 · 0 评论 -
AArch64教程第二章
AArch64教程第二章 在本系列的第一部分,我们做了一个很简单的程序。在本章,我们会继续学习有关AArch64更多的东西 寄存器 计算机仅能对二进制进行操作,所以程序被编码为所谓的二进制码,但是写机器码是很笨拙的,所以,汇编语言应运而生。在汇编中,我们指定程序的指令(和它的操作数)以及数据。指令会告知计算机要做什么(这也就是它们的含义所在)。 CPU是计算机执行程序的部分。一个实现AArch64架构的CPU的指令只能操作CPU内部的数据。在保存CPU内部数据的地方就被称为寄存器(Register)。任何需翻译 2021-09-14 08:36:24 · 1246 阅读 · 0 评论 -
AArch64教程第三章
AArch64教程第三章 在上一章,我们可以看到指令可能有寄存器操作码和立即数作为操作数。我们也要提醒大家注意,混合32位和64位寄存器是不允许的。今天我们将讲一下寄存器操作数。 寄存器操作数的操作者 很多把一个指令寄存器作为第二个操作数也同样能应用一些源寄存器的值的额外的操作。这也能作为一种方式来提高计算的密度,其方式是通过较少的指令和允许一些通用的使用一个操作数的操作。例如,转换,我们能区分两种类型的操作:移动和扩展。 移动性操作 在AArch64中有三种移动性操作:LSL,LSR,ASR和ROR。其语翻译 2021-09-14 16:04:42 · 460 阅读 · 0 评论 -
AArch64教程第四章
AArch64教程第四章 本章,我们将看到一些指令,这些指令允许我们做一些计算。 算术指令 因为一个计算机就是一个精美的计算器(或者说一个小型的计算机),它做一些基本的算术。现在,我们只把它约束在整型操作。后面的章节,我们会看到我们这么做其他类型的计算。 加法和减法 我们能够用add和sub指令做加法和减法。这些指令有点灵活,因为可以以多种形式使用。 add Rdest, Rsource1, #immediate // Rdest ← Rsource1 + immediate add Rd翻译 2021-09-15 09:14:36 · 394 阅读 · 0 评论 -
AArch64教程第五章
AArch64教程第五章 本章,我们将看看在aarch64中如何访问内存 内存 随机存储器,或者简单来说,内存是任一架构的必需部分。内存能够被看作由一系列连续的被称为地址的编号组成的数组,每一个元素都是一个字节。在AArch64中,地址是一个64位(这也并不意味着所有的位对地址都是有意义的)。 地址代数 假定地址是一堆我们可以操作的数字。然而,并不是所有的算术操作都在地址上能进行操作。一个高位地址能够被减去称为一个低位地址。其结果不是一个地址,而是一个偏移。偏移能够被添加到一个地址从而形成一个新的地址。很多翻译 2021-09-14 19:34:44 · 1695 阅读 · 0 评论 -
AArch64教程第七章
AArch64教程第七章 在本系列的前面几章,我们看到了怎么修改我们程序的顺序。今天我们会看到我们怎么通过分支的方式重复使用指令。让我们说一说函数。 例程(routine) 在用计算机解决一个问题的过程中,我们会碰到一些步骤,这些步骤是反复使用的。这些步骤可能是某个算法的一部分,而这些步骤是能够用指令编码的。这也就意味着我们可能会用一些指令,而这些指令的用途是一样的。如果我们能够找出这些指令,并且把这些指令放在一个位置上,并且当需要的时候使用它们。这就是一个例程(routine)的基本观点。我们在今日很少使翻译 2021-09-24 08:19:53 · 490 阅读 · 0 评论