一起造轮子! (Not finished)

前置要求

热情passion.

一些环境

为什么要环境(编译环境和可视化环境)?因为我们不是从头开始造轮子,我们将利用Yale N. Patt创造出的LC-3计算机的架构复现一遍。但是我们将站在一个发明者的视角。环境可以帮助我们学习和分析,并把我们头脑中的数据流动展现出来。我在MacOS上操作,但是其中的链接提供了其他操作系统的安装及使用方法。

我用到了以下环境:

lc3tools–现成的LC-3汇编编译器

有一个现成的编译器总会make out live easier,lc3tools。Unix上请按照README自行编译文件。

使用方法参考LC-3 Simulator Lab Manual.

lc3tools 接受一个.asm的文件,输出一个.obj的二进制可执行文件,这将是直接烧录到Program memory中的内容。在造出实物之前,可以将它烧录到lc3uarch中进行仿真和学习:

lc3uarch–Data path 模拟

lc3uarch,它接受一个.obj的二进制可执行文件,输出一个单步执行和数据流动的过程:

很酷吧!

customasm–自己的汇编编译器!

我们用customasm工具来写自己的汇编编译器。但不是有现成的LC-3编译器了吗?是因为我们以后可能要自己设计指令集,所以需要用自己写的汇编编译器。但是我们不是from scratch,已经有人写好了:customasm,下面就来安装这个工具。

customasm依赖rust,先用Homebrew安装rust环境:

1
brew install rust

检测是否装好了:

1
2
rustc --version
cargo --version

其中rustcrust的编译器,CargoRust的包管理器和构建工具,我们用它再安装customasm并配置环境变量:

1
2
3
4
cargo install customasm
nano ~/.zshrc
export PATH="$HOME/.cargo/bin:$PATH" # Press Ctrl + O to write the changes, Enter to confirm, and Ctrl + X to exit the editor.
source ~/.zshrc # apply changes

检测:

1
customasm --version

这里学习如何使用customasm.

Licensed under CC BY-NC-SA 4.0
comments powered by Disqus
Built with Hugo
Theme Stack designed by Jimmy