#寄存器

2021-5-11 5:38
这是贪婪自下而上的本地寄存器分配器的实现,英特尔8086 CPU。它可以用作简单编译器的一部分。特别是,它可以用于C编译器,其INT为16位,CHAR为8位。 为了使事物有趣和交互式,它具有从代表具有16位整数ALU操作,常量和内存负载和存储的表达式的树木生成8086个汇编代码(可编译为DOS .com程序)的代码......
2021-5-10 7:44
这里'我如何在空中工作的世界中建立第一个超声波3D扫描仪,使用搁板的组件(< $ 100)。 1 四年前,我15岁,想要建立一个自主的无人机来提供焦炭罐头。为此,我需要一个准确的3D地图,我的无人机周围环境避免墙壁和物体。 Lidars太昂贵了,猛烈2点' T良好。有超声波传感器,但它们只能在......
2021-5-8 22:58
Cranelift是以锈迹编程语言编写的代码生成器,其旨在成为快速代码生成器,其输出以合理速度运行的机器代码。 Cranelift编译模型在一个逐个中组成,持有有关外部实体的额外信息,如外部函数,内存地址等。此模型允许同时和并行编译各个函数,支持快速编译的目标。它的设计方法可以在Firefox中允许在Firefox......
ARM vs. RISC-V Vector Extensions(erik-engheim.medium.com)
2021-5-6 23:40
带有矢量指令的微处理器将成为未来的大事。为什么?因为自动驾驶,语音识别,图像识别都基于机器学习和机器学习都是关于矩阵和向量。 但这不是唯一的原因。自从我们半正式宣布的摩尔法律结束以来,我们一直在墙上敲打着墙上的脑袋,试图为多年来一直进行更多的表现。在微处理器设计的黄金时期,我们每年可以简单地加倍CPU的时钟频率,每......
2021-4-19 22:12
在1月份调查Apple M1 GPU的几个星期后,我能够使用自己的开源代码绘制三角形。虽然我开始解剖指令集,但指定为机器代码的着色器。真正的图形驱动程序需要从高级着色语言(GLSL或金属)的编译器到原生二进制文件。我们对M1 GPU指令集的理解已在过去几个月中提出。上周,我开始编写一个针对Apple GPU的免费和开......
2021-3-20 9:15
这篇文章是关于Cranelift的三部分系列中的最后一个。在第一篇文章,Icovered整体背景和指令选择问题中;在第二个帖子中,通过仔细的algorithmicdesign,它深入潜入编译器性能。 在这篇文章中,我想潜入我们如何工程师和工作的核查正确性,这也许是编译项目最重要的方面。编译器通常是一个复杂的野兽:要......
2020-12-29 1:50
#在M1上的行为。 其中一些可能是错误的-我还没有扭转 #使名称冲突更加混乱,但这并不是一个不好的地方 #将x,y和z描述为寄存器组,其中64字节的每一行是一个 #到61,以及第61位中的1位标志(充当0x40字节加载/存储 #amx2(z),但是8和9的结果分别在amx0和amx1(x / y)中,并且似乎......
2020-10-24 7:31
在本文中,我将简要描述用于在32位和64位x86CPU上转储和恢复不同类型寄存器的方法。第一部分将重点介绍通用寄存器、调试寄存器和浮点寄存器,直至SSE扩展提供的XMM寄存器。我将解释如何通过ptrace(2)接口获取它们的值。 Ptrace(2)API通常在所有现代BSD系统和Linux中使用,因为它们都是从4.3......
2020-10-15 22:34
☰Vladimir Keleshev·2020-10-13LDM-或load Multiple-是我最喜欢的ARM指令集汇编指令。原因如下。 这里,它需要一个基址寄存器(在本例中为R4)和一个寄存器集(在本例中为{R0,R1,R2,R3})。它将来自基址寄存器中的地址的连续字加载到集合中的寄存器中。在此示例中,可以使......
Z80, the 8-bit Number Cruncher(www.andreadrian.de)
2020-9-19 0:7
作者:Andre Adrian版本:2011年6月4日Z80是Zilog在1976年推出的8位CPU。它就像英特尔8085(1976),一种改进的英特尔8080设计。Intel8080(1974)是改进后的Intel8008。8008(1972)是DATAPOINT 2200CPU(1971)的MOS版本,它由100......
2020-9-12 15:48
几年前,我在Reddit上看到一个简单的流氓游戏,叫做coreRR。它非常简单;关卡只是一个有两面墙的盒子,只有一个敌人类型,有基本的人工智能,没有健康或性格属性,唯一的目标是看看你在死之前能走多远。由于没有更好的事情可做,我想为Arduino Nano编写一个端口会是一个有趣的小项目。所需的唯一输入是四个移动键,显......
2020-8-7 18:48
开放RISC-V指令集体系结构(ISA)中最有趣的部分可能是矢量扩展(RISC-V&34;V&34;)。与一般的单指令多数据(SIMD)指令集相比,RISC-V矢量指令是矢量长度不可知的(VLA)。因此,RISC-V&34;V&34;CPU可以灵活地选择矢量寄存器大小,而RISC-V&34;V&34; 本文比较了两种......
2020-7-20 7:7
作者Lev Aronsky(@levaronsky)*虽然QEMU一开始是一个仿真硬件的平台(特别是主机CPU不支持的架构),但后来的版本获得了使用硬件辅助虚拟化执行代码的能力。这可以带来巨大的性能优势,因为大多数执行的操作码都是由CPU直接执行的,而不是被翻译成许多模拟原始操作码行为的本地操作码。 使用虚拟化需要支......
2020-7-19 0:50
英特尔8086微处理器是有史以来最有影响力的芯片之一;它导致了今天主导台式机和服务器计算的x86架构。我一直在根据芯片照片对8086进行逆向工程,在这篇文章中,我讨论了它的寄存器文件是如何实现的。 8086芯片,显示寄存器存储。上部寄存器由总线接口单元用于存储器访问,而通用下部寄存器由执行单元使用。指令缓冲器是预取指......
2020-6-26 2:59
欢迎回来,感谢你加入我们的阅读笔记…。关于ELF文件的系列文章的第13部分介绍了它们是什么,它们可以做什么,动态链接器对它们做了什么,以及我们自己如何做到这一点。 到目前为止,我一直很成功地避免谈论TLS(不,不是那个),但我想我们已经到了不能再拖延的地步了,所以。 我们从艰难地阅读文件的经历中知道,作为一个用户端应......
Hardware Floating Point(blog.stephenmarz.com)
2020-6-23 7:31
本文是更大的教程“OS历险记:使用Rust制作RISC-V操作系统”中的一篇文章。 到目前为止,我们只使用整数指令。但是,既然我们希望支持用户进程,就必须能够支持硬件浮点单元(FPU)。在RISC-V中,这相当简单,但如果我们不小心,可能会导致一些麻烦。 首先,必须通过mstatus寄存器(更具体地说是FS位(位14......
AVX-512 Mask Registers, Again(travisdowns.github.io)
2020-5-26 10:5
几个帖子之前,我们查看了AVX-512面具注册器。具体地说,八个建筑一下的物理语域的数量,以及其他一些行为,如归零习语。最近,一张SKX的高分辨率冲模出现了,我想通过肉眼检查来核实我们的登记数量会很酷。当我试图做到这一点时,我发现了另一件有趣的事情,而不是…。 我们对这张Fritzchens Fritz最近在Flic......
2020-5-25 14:29
在过去一年左右的时间里,我一直在与OpenOrbis团队合作开发一个工具链,通过使用官方SDK材料在不违反版权法的情况下为PS4构建自制软件。这并不是一项容易的任务,构建在没有官方工具的情况下在系统上运行的自制软件带来了许多挑战。这些挑战中的关键是: Sony使用的libc库不遵守其他libc库遵循的标准。 虽然处理......
Assembly’s Perspective(blog.stephenmarz.com)
2020-5-21 9:35
如果您没有生活在与冠状病毒隔离的岩石下,您可能听说过C成为汇编语言2.0,或者听说过新的汇编语言,或者听说过这个。嗯,这篇文章将讨论C语言和汇编语言是如何一起跳舞的-探戈?华尔兹?谁知道呢? 我通常写关于操作系统的文章,但我不能完全用一种语言编写操作系统。这可能是可以做到的,但对我来说,我纯粹是用汇编语言编写引导加载......