-
Notifications
You must be signed in to change notification settings - Fork 35
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
写在前面 | 北大编译实践在线文档 #5
Comments
不是学生,如何使用评测系统 |
抱歉,评测系统暂不对外开放,你可以尝试进行本地测试。 |
实验代码在哪啊,想自学写写 |
代码及相关的使用方法都在文档里,阅读文档即可。 |
maxXing太强啦!!! |
助教你们写的文档好幽默啊。 |
示例编译器的C++实现是空仓库。 |
是的,暂时还没写完,目前有些别的工作要完成所以优先去干别的了 |
win10系统,执行docker pull maxxing/compiler-dev命令后,下载的文件下一半就自动停止了,请问如何解决呢(已经配置了镜像,没配置镜像也下不下来) |
这个听起来属于Docker的问题。 不知道“自动停止”之前是否有其他提示,建议在搜索引擎或者StackOverflow之类的网站上搜索相关问题。 |
在执行docker run的过程中,cargo在编译下载下来的crate的时候发生了错误,请问这个问题该如何解决?本人电脑是arm架构的 |
compiler-dev镜像暂不支持除amd64外的其他架构, 抱歉. |
感谢,我换了台amd64的电脑就可以了,但是请问在autotest自己的编译器的时候cargo build我的编译器的bin文件会非常的慢(昨天我编译了一下花了12分钟)请问这个是正常的情况吗?当我自己在docker bash中不使用autotest自己cargo build的话就没有这么慢。 |
为了缩减体积, Docker镜像内没有保留任何Cargo缓存, 所以如果你第一次用autotest编译, cargo会花一些时间缓存crates.io的index. 如果你后续再编译的话, 速度会变快, 当然前提是你不要关闭并删除当前的容器. 另一个原因是, 默认情况autotest每次会把编译结果输出到一个临时目录, 而你自己手动调用cargo时, cargo总会把编译结果输出到固定位置. 这导致autotest默认无法利用编译缓存增量编译. 你可以参考附录中的实验环境使用说明中的指示, 设置autotest的working directory来解决这个问题. |
好的,谢谢,多谢指导 |
最后完整的c++AST可不可以给个例子 |
这需要你自行构造, 所以暂无例子. |
可以提供一个不需要在compiler-dev下才能运行的makefile吗 |
Makefile 看起来 “只能” 在 compiler-dev 下使用的原因是, 你的 C/C++ 项目是在 Flex/Bison 和 Koopa IR 库的基础上编写的, compiler-dev 里附带了这些内容, 所以 Makefile 可以在其中使用. 于是同理, 如果你能找到一个非 compiler-dev 但正确配置了上述内容的环境, 那你就能在这个环境下使用我们提供的 Makefile. |
我遇到一个问题,已经在邮件上向您提问,希望您能回复,谢谢 |
(如果没有, 源码里一定会有)指的是自己调试本编译原理项目代码,慢慢找bug吗,还是说阅读其他类似的项目代码呢 |
这是个普适性的表述, 并非特指本项目, 意为: 你在遇到某些计算机相关的工程问题的时候, 读代码就可以解决几乎所有问题. 这种说法放在本项目里也是适用的. |
是的, 比如你发现你在使用libkoopa的时候出现了问题, 你可以直接去读libkoopa的源码, 然后带着你的假设去验证这个问题是否确实是按照你预想的形式发生的, 最后找到一种方法解决这个问题. |
可以讲一下raw program,以及libkoopa 中的相关接口的调用吗? |
主要是不太理解里面slice的概念,还有不知道怎么调用libkoopa 的接口 |
|
@MaxXSoft 请问 在MacOS Aarch64平台上docker 从make 开始build环境需要注意什么问题 |
你好!目前从 Docker Hub 拉取的镜像暂不支持 Apple Silicon。 Docker 镜像所属仓库为 pku-minic/compiler-dev,前段时间有人为其添加了包含 aarch64 在内的多平台支持,但我暂未更新 Docker Hub 的镜像。近期我更换了新的 M3 处理器的 MacBook Pro,稍后的一段时间在进行一些测试之后,我会更新 Docker Hub 的镜像,使其支持 Apple Silicon。 |
您好,我刚刚在我的电脑(M1 Darwin)上build了一次,并且进入了开发环境,十分感谢您的回答 |
@Juminiy 仔细看了一下你的前一个提问,发现我有点答非所问了,不好意思。如果只是问 make 要注意什么问题的话,理论上没什么问题,直接按照 README make 就行。 很高兴看到你已经 build 成功了,祝学习顺利! |
Lv3.2 为什么不叫算术表达式(STFW 无果),还是说打错了? |
@383494 确实写错了,感谢指出!我回头修一下 |
我不知道你的编程习惯哈,但是智能指针这个东西最好不要用,因为纯粹实现一个玩具的编译器还不需要考虑性能这种东西,可能我水平比较低,谢谢 |
@Juminiy 好,按照你喜欢的方式即可。 |
@Juminiy 北大这门课的侧重点暂时放在编译器的实现上,因此文档里不会重点讨论编译优化的内容。如果未来有相关课程,并且这类课程也愿意基于本课程的框架来教授实验的话,应该可以考虑推出优化部分的文档。 本课程暂时只面向 RISC-V 生成目标代码,因为 x86/amd64 里的很多设计对于一些同学来说可能不太好理解,容易分散大家的注意力。在未来,我们也暂时没有添加 x86/amd64 相关内容的计划。 |
很棒!!!支持!!! |
koopac似乎没有放入环境变量,如果有人找不到koopac命令的话,它的位置是/opt/bin/koopac |
@JiNanPiWang 按理说是放了的: 而且 autotest 脚本里也是直接在没写完整路径的情况下执行了 koopac 命令,这个东西要出错的话整个环境就崩盘了,所以这种问题很早会被发现。 请问你用的环境是否被修改过,或者你自己执行过哪些别的脚本吗? |
抱歉,是我的问题,应该是我不小心动了什么。我又创建了一个新的容器,发现没有问题了 |
请问近期有更新镜像以支持apple silicon的计划吗,谢谢! |
助教您好,我在本地进行cargo build时是可以正常编译的,提交之后提示CCE,由于显示只有一部分,只能看到大量的crate下载信息,看不到错误原因。我尝试降级到1.70.0版本依然可以编译,请问可能是什么原因?我并没有使用docker。 仓库在这里 |
@LeoDreamer2004,如果你是选修了这门课的同学的话,在线评测的有关问题直接去找现在的助教比较合适。他们不一定 watch 了这个仓库,在这里留言他们可能看不到。虽然根据你的描述我猜测问题可能是你本地工具链版本和评测机使用的版本不同 |
还是太难, (从6岁小孩视角来看, 集体智商群体智商一般也就这个水平, 王垠说过若你的教学教不会6岁小孩, 说明你的教育是失败的.) 教程里有很多细节不用中文标识符, 也不用中文汉字注释. 写编译器最重要的是预先设计文法, 先用中文汉字汉语把BNF讲清楚了再说. 文法第一步, |
我嘞个民科啊
|
咋了? 你瞧不起民科吗? |
不是瞧不起民科,是瞧不起明知道没接受过科班系统化教育还这么高傲的人。这是实践课程,理论不熟你先补啊。手写词法分析语法分析,你是这俩玩意儿还没写够是吗。你去大学里瞅一眼,基本都止步于此来。正是因为大学里天天都是这玩意儿效果也不怎么好所以才寻求突破啊才会有这门课程啊。脱离实际背景你瞎批判什么,六岁小孩,你去跟六岁小孩解释什么叫量子力学去。这还扯上什么洋大人了,计算机语言的符号根本不重要,你要是神金你拿长短不一的空格写一个语言都行,但是好用吗?我问你好用吗?平假名也能写英语,好用吗,我问你好用吗。真是离谱 |
看了一圈你的项目,我看你是鉴证把脑子鉴坏了 |
科班系统化教育 = 考试机器吹学历. |
好家伙, 看来是学不会就事论事, 还是那句话, "是的, 你是对的,继续思维僵化固化, 继续停留在低端代码制造业, 为西方洋大人的软件工程打工, 供养洋大人吸血", 你会得到代码飞升. |
知道你又蠢又不愿意听人说话了。不要回复我了,令人无语且可怜 |
一头髒犭, 继续去舔洋大人吧, 汉人的文字, 你不用看, 一匹拜弱肉强食的动物, 还称自己为"人", 呵呵. |
别给脸不要脸 |
赶紧滚开, 老子这里一直在提示叫, 你不烦呐? |
https://pku-minic.github.io/online-doc/#/preface/
北京大学编译实践课程在线文档
The text was updated successfully, but these errors were encountered: