2022-2-22 9:9我';我以前得出的结论是';在现代社会,除了为了获得更紧凑的代码外,没有什么理由使用字节码,因为字节码非常有效。那么,什么样的abytecode引擎将为您提供更紧凑的代码?
假设我想要一个字节码解释器,用于一个非常小的编程环境,特别是最小化程序所需的内存;比如,在一个32位微控制器上,有40KiB的程序闪......
2022-2-14 23:39Jump to navigation Jump to search Core War是由D.G.Jones和a.K.Dewdney于1984年开发的一款编程游戏,其中包含两个或多个作战程序(称为";勇士";)争夺虚拟计算机的控制权。这些作战程序是用一种叫做Redcode的抽象汇编语言编写的。
在游戏开始时......
2021-8-7 3:18最近一篇关于编程的男子气概方面的文章发表了一个赤裸裸的声明:真正的程序员用 FORTRAN 编写。也许他们现在这样做了,在这个 Lite 啤酒、手动计算器和“用户友好”软件的颓废时代,但回到过去,“软件”一词听起来很有趣,真正的计算机是由鼓和真空管制成的,真正的程序员用机器码写的。不是 FORTRAN。不是RAT......
2021-7-25 23:31在我进入逆向工程之前,可执行文件对我来说总是像是黑魔法。我一直想知道这些东西是如何在幕后工作的,二进制代码如何在 .exe 文件中表示,以及在不访问原始源代码的情况下修改这个“编译代码”是多么困难。但主要的令人生畏的障碍之一似乎总是汇编语言,它使大多数人不敢尝试学习这个领域。这就是为什么我想写这篇直截了当的文章的主要......
2021-6-21 9:43TL; DR一个小型CPU设计,可以派上用场,一个详细的代码演练,一个开始学习SILIC和RISC-V的好地方。
ICE-V是实现RISC-V RV32I规范的处理器。它简单且紧凑(〜100行减少,见下图),演示了Siliel的许多功能,可以是项目中的好伴侣。它专门用于从BRAM执行代码,其中代码在合成时被烘焙......
2021-6-5 23:31仔细看看“非法”操作系统和MOS 6502 MPU的未记录指令。
MOS 6502 MPU的指令表由MOS技术设计并于1975年推出(CMOS版本,65C02由Western Design Center开发)具有一些明显的差距,只有56种IntrultIons以各种地址模式记录。这叶105无证的插槽 - 而6......
2021-5-11 10:14永久链接当前是一个草稿。它可能是任意错误的。反馈非常欢迎。本文件(旨在最终)概述用于处理意外指令的技术,我的希望是这对他人有所帮助,但主要的目标是帮助我组织自己的思想并在文学中包装我的脑袋话题。我一直在为客户做这个话题的工作,并将在不久的将来在上游LLVM中进行一些相关的工作。完成后,此写作将作为该项目的背景。
......
2021-4-22 11:55令人惊讶的是,给出一个很好的答案(在本文中提出的问题)。这取决于你的统计方式,细节很有趣(无论如何)。
不要离开你挂起:英特尔有一个官方x86编码器/解码器库,名为xed。根据英特尔的XED,就像这种写作一样,有1503个定义的x86指令(“Xed Lingo的iClasses”),从AAA到XTest(这也包括A......
2021-3-26 20:6Home x86内部结构猜测整个x86-64指令在几秒钟内使用这个奇怪的技巧
作为俗气的标题声音,我保证无法击败技术的俗气,我会在这篇文章中告诉你。早上我看到Mark Ermolov的推文关于无证指导从/写入CRBUS,我手里有一点空闲时间,我知道我不得不找出OPCode,所以我立即开始理论制作。经过几个小时的数字......
2021-3-20 8:56此前的这一份额是"基本上解释了FPGA和A' Hello World' nmigen例子。" 1在这篇文章中,我将详细说明我的CPU目前的设计,并追溯到我沿途所做的各种错误。与上一篇文章一起,我主要针对软件工程师的旨在新的硬件设计 - 但我希望它对尼格珍,RISC-V或CPU设计中的任......
2021-3-7 23:27这是在Apple M1中的CPU中的微型建筑文件的早期尝试,灵感来自Andreas Abel,Andrei Frumusanu,@Veedrac,Travis Downs,Henry Wongand Aganter Fog的惊人工作。本文档是我的最佳努力,但它基于黑匣子逆向工程,肯定会有错误。没有任何形式的保修(而不......
2021-2-27 5:3Uber的适用于Rider,Driver和Eats的iOS移动应用程序很大。选择Swift作为我们的主要编程语言,快速的开发环境和功能添加,分层的软件及其依赖项以及静态链接的平台库会导致大型应用程序二进制文件。减小应用程序大小对于我们的客户体验至关重要。此外,苹果公司对应用程序下载大小的限制禁止通过空中下载大量应用程......
2021-2-24 21:23当计算机没有操作系统而没有ROM时,如何从打卡中启动计算机?要使事情更糟糕,这台计算机需要特殊的元数据,称为#34;字标记"可以' t在卡上代表。在这个博客文章中,我描述了复古IBM 1401计算机中使用的有趣硬件和软件技术,以从打卡甲板加载软件。(除其他内容中,每个人的一半卡包含读取每张卡时运行的加......
2021-1-9 15:50现代处理器非常复杂,许多部件都有可能成为瓶颈。短代码的性能相对容易推断,尤其是在将内存影响保持在最低水平的情况下。在这种情况下,静态分析工具(如LLVM MCA和微基准)都可以提供很多信息。但是,整个程序的行为不仅仅是这些小部分的总和。随着代码变大和越来越复杂,其他效果开始出现。这种潜在问题之一是过多的指令高速缓存未......
2021-1-5 14:10旧的Cray-1型矢量机还会回来吗?向量指令和现代SIMD指令之间到底有什么区别?
在1980年代,超级计算机的外观如下图所示。 Cray的半圆形是80年代超级计算机的代名词。那就是一台超级计算机的样子。
过去的超级计算时代与RISC-V有什么关系?您会看到Cray计算机,我们称之为矢量处理机。早已被视为过去......
2021-1-1 8:8专门为英特尔处理器设计的主流操作系统的历史使得有时要由不编写操作系统本身的程序员来开发旨在在操作系统级别或接近操作系统级别运行的软件。这些程序员意在为操作系统添加功能,并且可能是Microsoft以外的程序员的创造性添加为Microsoft操作系统在消费市场上的稳定性和成功做出了很大贡献。
由于它们与处理器的协作更......
2020-12-24 21:18使用声明在语义上类似于声明;它在当前范围内引入了名称的新含义。如果该名称已经具有来自外部作用域的一个或多个含义,则这些现有的含义将被新声明隐藏或遮盖。 Godbolt:
命名空间AnimalUtils {int foo(Zoo :: Animal);}命名空间Outer {int foo(Zoo :: Lion);......
2020-11-21 12:25如今,许多人说RISC和CISC之间的区别变得无关紧要。真的吗?如果不是,那么现代RISC和CISC CPU之间到底有什么区别?
Apple现在已经发布了M1 Apple Silicon芯片,经过一番摸索,您可能想知道它与Intel或AMD处理器有何不同?您可能听说过M1被称为ARM处理器,而ARM是所谓的RISC处......
2020-11-16 21:29编写仿真器使旧的计算机硬件起死回生是一种流行的爱好,我最近通过自己的目标--编写一款Atari 2600仿真器--一直在享受这一爱好。然而,编写CPU仿真器可能会有些重复和乏味,所以我想我应该探索一种不同的方法-从规范生成CPU仿真代码,而不是手动转换它。这篇博文分享了丰硕的成果。
雅达利2600在70年代末和80年......
2020-11-5 20:10管理程序内存自省(HVMI)依赖于分析内存访问以确定它们是否合法。例如,通过分析旧的存储值和新存储的值,HVMI可以决定是否允许修改。然而,这带来了需要对修改受保护内存的每条指令进行深入分析的复杂性。与RISC体系结构不同,x86有大量的指令可以通过复杂的读-修改-写(RMW)方式访问存储器,并使用复杂的寻址方案。为......
2020-11-5 2:6这个问题在很大程度上是自己造成的,是由于编译器太慢(我们经常使用LLVM)造成的,而我们给它提供了大段代码来进行更多的优化,这让情况变得更糟。
通过限制自己一次只编译一条指令,我们在表上留下了一些性能,但极大地提高了编译速度。
这使得编译速度非常快,因为我们基本上只是在每次使用指令时复制-粘贴模板,仅根据其参数执行一......
2020-11-1 19:59这份文件最初是几年前写的。当时我在ARM担任执行核心验证工程师。通过在不同处理器的执行核心内和周围工作,以下几点被涂上了浓墨重彩的色彩。加一小撮盐;观点包含不同程度的意见。
我仍然认为RISC-V可以设计得更好;尽管我也会说,如果我现在正在构建一个32位或64位的CPU,我很可能会实现该体系结构以受益于现有的工具。
......
2020-10-30 5:40英特尔在其Sunny Cove和Tremont内核中添加了伽罗瓦域指令集(GFNI)扩展。特别有趣的是,GFNI是SSE和VEX/AVX编码附带的唯一新的SIMD扩展(除了EVEX/AVX512),以允许它在所有未来的Intel内核上得到支持,包括那些不支持AVX512的内核(如Atom系列,以及赛扬/奔腾品牌的“大......
2020-10-27 6:26最近,我需要为一个研究项目分析一些RISC-V汇编代码,然后计算一些基本指标,但我找不到合适的工具。好的,我将从一个较小的开放源码汇编器中获取一个解析器。这并不成功,因为我看到的那些使用粗糙的、基于正则表达式的解析器,这些解析器不维护有关结构的信息。
没问题,我会实现我自己的!让我查一下RISC-V汇编的语法...。......
2020-10-22 8:51这篇文章是关于BEAM的简短入门读物,BEAM是在Erlang Runtime system(ERTS)中执行用户代码的虚拟机。它的目的是帮助那些BEAM新手关注OTP24中即将发布的关于JIT的一系列帖子,将实现细节留到后面。
BEAM经常与ERTS混淆,区分这两个很重要;BEAM只是虚拟机,它没有进程、端口、ET......
2020-10-19 13:54欢迎回到编译Lisp系列。在这个激动人心的新更新中,我们将学习更多关于x86-64指令编码的知识,而不是在堆上分配更多有趣的东西或添加过程调用。
我之所以写这段插曲,是因为我把编译器代码中的一个寄存器(krbp改成了krsp),所有的地狱都崩溃了-结果程序崩溃了,rasm2/Cutter在给我的二进制文件时解码古怪的......
2020-10-17 23:31RISC-V组件与任何其他组件类似,与MIPS组件相似。就像任何程序集一样,我们有一个指令列表,它会逐渐使我们更接近我们的解决方案。
我们将使用riscv-g++编译器并将C++文件与汇编文件链接起来。您将编写程序集文件,而C++文件有助于简化实验。
部件文件以.S(大写S)结尾。编译器包括编译、汇编和链接的所有阶段......
2020-10-14 22:2生命支持设备或系统是指(A)用于外科手术植入人体的设备,或(B)。
支持或维持生命,并且在按照以下说明正确使用时不能正常工作。
可以合理地预期标签中提供的使用会对使用者造成重大伤害。一个标准-。
校准组件是支持设备或系统中可能出现故障的任何组件-。
可能会导致生命支持设备或系统发生故障或影响其安全性或有效性。
或者所......
2020-10-11 16:19这篇文章将我最近在Cranelift上的工作描述为我在Mozilla的日常工作的一部分。在这篇文章中,我将设置一些上下文并描述指令选择问题。特别地,我将谈一谈指令选择器和后端框架的总体改造,这是我们在过去九个月左右一直致力于的工作。这项工作是与我杰出的同事朱利安·苏厄德(Julian Seward)和本杰明·布维尔(......
2020-9-21 12:4这篇文章是关于我在Mozilla的日常工作中最近在Cranelift上的工作的三部分系列中的第一部分。在第一篇文章中,我将设置一些上下文并描述指令选择问题。特别地,我将谈一谈指令选择器和后端框架的总体改进,这是我们在过去九个月左右一直在做的工作。这项工作是与我杰出的同事Julian Seward和Benjamin B......