LC3 仿真器的安装和使用

最近想看计算机方面的经典教材《计算机系统概论》, 但是它上面的实例全部是在 LC3 仿真器环境下编写的。要学习需要首先安装 LC3 simulator 。 

安装 lc3 仿真器的方法:
1. 到官网下载 lc3 模拟器和 lc3 编译器(网址:http://highered.mheducation.com/sites/0072467509/student_view0/lc-3_simulator_lab_manual.html)。
下载解压缩后,我将其放在 /home/david/Public/LC3_simulator目录下。下载下来的都是源码文件,我们需要做的就是手动编译下。
2. 命令行切换到 /home/david/Public/LC3_simulator/lc3tools 目录下, 根据README描述,安装模拟器需要gcc、flex、wish这三个组件。其实Ubuntu
自带了 gcc 和 wish, 只需要安装 flex 即可。那么 sudo apt install flex 安装即可。
3. 输入 ./configure
4. 用 gedit 打开 Makefile 文件,找到一句“OS_SIM_LIBS = -lcurses”,把其中的“-lcurses”删掉后保存。
5. 回到终端, 输入 make 编译成功。 终端中输入 ./lc3sim 即可打开模拟器。
6. 模拟器安装完成了,下面就是编译器了。cd ../lcc-1.3 来到编译器的目录。同样是阅读README文件,输入 ./configure 提示权限不足,用 sudo ./configure 还是不行,这时我们需要强制使用sh来运行这个脚本。完整的命令为:sudo sh ./configure。(出现上述问题的原因是那个configure脚本没有加上可执行的权限,所以我们需要sudo sh来强制让它执行。解决办法为:先输入chmod +x configure,然后就可以正常以./configure的方式来执行了。)输入账户密码后便可以了。接下来输入“make”和“make install”来编译源码并安装。
7. 安装结束后,二进制可执行文件会存放在该目录下/install/的文件夹中,其中的lcc便是编译器的主程序。它同样是一个命令行程序,不带参数输入./lcc便可以看到用法说明。
8. 试着把一个 C 程序翻译成LC-3 汇编指令:
用 gedit 编写 C 程序:

int main()
{
printf("Hello, world! \n");
return 0;
}

保存为 test.c 文件。
在终端切换到 install目录下,执行:./lcc test.c, 会在同层目录下自动生成 a.asm 文件,打开之后发现文件居然这么长。。。
以下是自动编译成的 LC-3 汇编指令:

.Orig x3000
INIT_CODE
LEA R6, #-1
ADD R5, R6, #0
ADD R6, R6, R6
ADD R6, R6, R6
ADD R6, R6, R5
ADD R6, R6, #-1
ADD R5, R5, R5
ADD R5, R6, #0
LD R4, GLOBAL_DATA_POINTER
LD R7, GLOBAL_MAIN_POINTER
jsrr R7
HALT

GLOBAL_DATA_POINTER .FILL GLOBAL_DATA_START
GLOBAL_MAIN_POINTER .FILL main
;;;;;;;;;;;;;;;;;;;;;;;;;;;;main;;;;;;;;;;;;;;;;;;;;;;;;;;;;
main
ADD R6, R6, #-2
STR R7, R6, #0
ADD R6, R6, #-1
STR R5, R6, #0
ADD R5, R6, #-1

ADD R6, R6, #-1
ADD R7, R4, #3
ADD R6, R6, #-1
STR R7, R6, #0
ADD R0, R4, #1
LDR R0, R0, #0
jsrr R0
LDR R7, R6, #0
ADD R6, R6, #1
ADD R7, R4, #2
ldr R7, R7, #
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值