课程主页:

https://www.edx.org/course/compilers

课程视频:

https://www.bilibili.com/video/BV1NE411376V?p=20&t=6

参考资料:

https://courses.edx.org/courses/course-v1:StanfordOnline+SOE.YCSCS1+2T2020/6b750292e90d4950b895f621a5671b49/

https://stackoverflow.com/questions/42120938/exec-format-error-32-bit-executable-windows-subsystem-for-linux

https://blog.csdn.net/zhou5712/article/details/65935783

https://github.com/afterthat97/cool-compiler/issues/2

上一篇博客介绍了如何在Ubuntu下配置开发环境,这里介绍基于wsl2 + vscode配置开发环境。

配置wsl2 + vscode

首先配置wsl2 + vscode开发环境,配置方法可以参考SICP环境配置

下载课程代码

这里按照官方的方式下载代码

sudo mkdir /usr/class
cd /usr/class
wget https://courses.edx.org/asset-v1:StanfordOnline+SOE.YCSCS1+1T2020+type@asset+block@student-dist.tar.gz
tar -xf student-dist.tar.gz

修改/home/user路径下.bashrc文件,在最后一行添加

export PATH=/usr/class/cool/bin:$PATH

运行如下命令即可

source ~/.bashrc

.i686/.i386报错

注意这里一定要安装wsl2,因为课程使用的spim是32位的,但是wsl不支持32位程序。具体来说,我们下载课程代码后,可以在cool/bin目录下找到.i686或.i386文件,如果运行spim命令,尽管更新了path,但是依然会提示找不到spim命令,这是因为我们在64位系统下运行32位程序,为了运行32位程序,我们需要进行如下配置

sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386

.i686或.i386的含义可以参考如下内容:

https://blog.csdn.net/zhou5712/article/details/65935783

测试

在cool/assignments/PA1中运行如下命令进行测试:

coolc stack.cl atoi.cl
spim -file stack.s

如果得到如下内容则说明环境配置正确

SPIM Version 6.5 of January 4, 2003
Copyright 1990-2003 by James R. Larus (larus@cs.wisc.edu).
All Rights Reserved.
See the file README for a full copyright notice.
Loaded: ../lib/trap.handler
Nothing implemented
COOL program successfully executed