如何找到极低级编程的信息?

时间:2013-12-13 12:38:39

标签: search assembly search-engine cpu-architecture low-level

首先,关于这个问题的一些背景:今天,我正在寻找关于测试如何在装配中起作用的解释。不幸的是,我似乎无法在谷歌中找到答案,因为“测试”,“汇编”等都是在其他情况下经常使用的常用词。最终我通过搜索“条件分支”找到了一些信息,这不是我想要的,但是它是一个很好的起点。

我的问题是,我在哪里可以获得有关低级计算机操作的信息?例如如果我想了解一个分​​支语句是如何工作的,或者cpu缓存是如何工作的,或者当你移位寄存器时多余的位会发生什么?我如何搜索这些?

3 个答案:

答案 0 :(得分:6)

汇编指令是特定于体系结构的,因此您可以在该体系结构的文档中找到它们的确切行为。如果您只是在学习,我建议您从简单的RISC架构开始,就像Atmel 8位avr芯片使用的架构一样。

“低于”汇编指令是“操作码”(操作码),这些汇编指令被“组装”成(现代装配商完成的其他一些事情)。这些对于体系结构非常具体,并且与cpu处理指令的参数(如果有)的方式有关,例如,参数可能是与当前地址(相对)的偏移量或者它可以是内存中任何地方的完整地址,也可以是文字值或完全不同的其他内容。 因为在某些时候,我们需要将指令归结为我们想要处理我们的参数的特定版本,带参数的指令将存在于不同的“版本”中,具体取决于它们可以采用的参数类型(“寻址“)。 存在于若干版本中的指令的一个示例(支持几种寻址模式)是心爱的6502中的LDA(http://www.6502.org/tutorials/6502opcodes.html#LDA)。所以基本上,比汇编更低的级别是简单地将操作码写入内存,这是完全可行的,并且可能会让你与你选择的芯片非常亲密。

架构的哪些指令支持哪种寻址模式的差别很大。

如果你想要“低于”水平(即,如何在芯片的门上执行实际的机器代码),你需要研究一个记录良好且逆向工程的芯片,如{{3可能有帮助。

关于6502的主题,正如Olivier Dulac所提到的,skillddicks easy6502项目在学习和理解(6502)汇编编程,寻址模式和操作码方面也非常有帮助。 http://visual6502.org/

请注意,开始使用x86(这是一个CISC架构)对于初学者甚至是RISC程序员来说都是非常艰巨的。

答案 1 :(得分:1)

这就是我所理解的“非常低级别的编程”: http://www.cs.usfca.edu/~cruse/cs630f06/

借助这个诅咒和英特尔手册中的材料,我已经能够做一些有趣的事情,例如唤醒多核处理器中的所有内核并分配代码来执行每个内核,从MS- DOS。

甚至比使用VHDL或Verilog设计自己的微处理器还要低。然后你不再“编程”,而是描述电子学,虽然你做的方式似乎是编程。事实上,你最终会得到一个稍微不同的范式,其中语句本质上是并行执行而不是顺序执行。这样,交换两个变量的值就是这样做的:

a <= b;
b <= a;

而不是这(我们所知道的方式):

t = a;
a = b;
b = t;

有关描述处理器和电子设备的示例,请转到http://www.opencores.org

答案 2 :(得分:0)

找到微程序设计,或者如果这还不够,那就是纳米编程。几十年前有一台纳米编程计算机(经典),但我不记得这个名字了。

对于微程序设计,您可能希望使用this。 它是一个可编程的处理器架构模拟器,也有一些示例架构可供下载。