Skip to content

Commit

Permalink
Merge branch 'main' of github.com:liuly0322/ics
Browse files Browse the repository at this point in the history
  • Loading branch information
xkz0777 committed May 20, 2023
2 parents bc58ceb + 6cff6b5 commit a44f735
Show file tree
Hide file tree
Showing 5 changed files with 10 additions and 7 deletions.
9 changes: 5 additions & 4 deletions docs/faq/hw.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,10 @@
3. 本次实验只能使用 LC3Tools 进行测试,没有网站的评测。同时在使用软件测试时,需要注意:

- 键盘输入需要点进左下角的 console 再输入 (click to focus),不然不能正常读入。
- 一定要在设置里打开 `Ignore privileged mode` 选项,否则会导致程序异常终止
- LC3Tools 使用时可能会出现 bug,例如循环输出学号时对键盘输入没有任何反应,如果你出现了这样的情况,有很大可能是 LC3Toolsbug,可以尝试把 interrupt service 内容改成只有 `HALT`,重启软件再重新尝试,如果依然不行,你可能需要重装 LC3Tools
- LC3Tools 使用时可能会出现 bug,例如循环输出学号时对键盘输入没有任何反应,如果你出现了这样的情况,有很大可能是 LC3Tools 的 bug,建议重启软件再重新尝试
> 需要重启软件可能是因为之前键盘有输入把 kbsr 最高位设为 1(kbsr 从 x4000 变为 xC000),但是没有读 kbdr(trap x21/ldi r0,kbdr) 把 kbsr 最高位复位 (kbsr 变回 x4000)。kbsr 没有复位的情况下不会对后续的键盘输入做相应,也就是上边说的输入无效的问题。LC3 toolreinitialize machine 部分不会重置 IO 相关内存(这个时候 kbsr 一直是 xC000,reinitialize 之后还是不能输入),所以只能通过重启解决。避免这个问题的方法是接收到键盘输入以后及时读出 kbdr 的数据使 kbsr 复位
4. 实验只需要在提供的 starter code 的基础上编写 x3000 的 user program 和 x1000 的 interrupt service,两部分之间的关联(也即中断),已经在 x800 的地方写好了。至于 x3FFF 处的注释,只是说明 `HANOI_N` 是存在这个地方的,并不需要在这里写代码。
4. 实验只需要在提供的 starter code 的基础上编写 x3000 的 user program 和 x1000 的 interrupt service,两部分之间的关联(也即中断),已经在 x800 的地方写好了。至于 x3FFF 处的注释,只是说明 `HANOI_N` 是存在这个地方的,并不需要在这里写代码。不理解中断请仔细阅读书本第九章。

5. 有人问 x800 的 code set KBSR 的时候为什么这么麻烦,这是为了不改变其他位,这里的处理是 clear bit 14,之后在 ADD 掩码,也可以考虑对 KBSR 取反后,clear bit 14 再取反,也能达到一样的目的。

Expand All @@ -26,7 +26,8 @@

8. `Illegal opcode`,大概率是把数据当成指令执行,跟 7 的错误很像,可以通过打断点单步调试来找 bug。同时请注意,JSR 后面的 subroutine,需要你通过 step in 才能进去调试,而不是 step over(这和高级语言的调试器是一致的)。

9. 不同的 `.ORIG` 块作用是把代码插在不同的地址,程序将会从第一个 `.ORIG` 块开始执行,在本次实验中也就是 x800。同时多个 `.ORIG` 块也并不是并发运行的,如果还不理解中断,请仔细阅读书本第九章的相关知识。不同的 `.ORIG` 块不能 share label,因此对于同一个地址,例如 `HANOI_N`,你需要在不同的 `.ORIG` 块中用不同的名字 `.FILL` 相同的值。
9. 不同的 `.ORIG` 块作用是把代码插在不同的地址,程序将会从第一个 `.ORIG` 块开始执行,在本次实验中也就是 x800。同时多个 `.ORIG` 块也并不是并行运行的,如果还不理解中断,请仔细阅读书本第九章的相关知识。不同的 `.ORIG` 块不能 share label,因此对于同一个地址,例如 `HANOI_N`,你需要在不同的 `.ORIG` 块中用不同的名字 `.FILL` 相同的值。

## Q:关于 Windows 下连接 Vlab 的常见问题

1. 配置文件中的 `~` 指的是家目录,Windows 下的家目录是 `C:\Users\你的用户名`,例如你的用户名是 ikun,那你的配置文件路径就是 `C:\Users\ikun\.ssh\config`。这也可以通过在 VSCode 下使用 `ctrl + shift + p`,选择 `Remote-SSH: Open SSH Configuration File` 来打开。同时这个文件也是没有后缀名的,不要写成 json 之类的乱七八糟的格式,按照我 PPT 里写的来就行,注意 IdentityFile 的路径一定要改对。
Expand Down
4 changes: 3 additions & 1 deletion docs/homework/hw5.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@
- BB 系统提交电子版 PDF,允许手写拍照、latex、markdown、word 等
- 文件重命名为 `PB21xxxxxx_姓名_作业5.pdf` 的格式

- DDL:12.21 23:30
- DDL:12.28 23:30

- [答案](/pdf/hw5_ans.pdf)

- 本次作业 [PDF](/pdf/hw5.pdf)
2 changes: 1 addition & 1 deletion docs/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
- [实验二](/labs/lab2.html) 已公布,DDL: 12.07 23:30
- [实验三](/labs/lab3.html) 已公布,DDL: 12.14 23:30
- [实验四](/labs/lab4.html) 已公布,DDL: 12.28 23:30
- [实验五](/labs/lab5.html) 已公布,DDL: 12.28 23:30
- [实验五](/labs/lab5.html) 已公布,DDL: 12.31 23:30
- [实验六](/labs/lab6.html) 已公布,DDL: 01.07 23:30
- [labA](/labs/labA.html) 已公布,检查 DDL 01.07 10:30
- [labS](/labs/labS.html) 已公布,检查 DDL 01.07 10:30
2 changes: 1 addition & 1 deletion docs/labs/lab4.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

本次实验 [PDF](/pdf/lab4.pdf)

ddl:12.21 23:30
ddl:12.28 23:30

- BB 系统提交 zip 压缩包,压缩包内目录结构
```
Expand Down
Binary file added docs/public/pdf/hw5_ans.pdf
Binary file not shown.

0 comments on commit a44f735

Please sign in to comment.