# 系統發展史與軟體工程

## 關於我
<img style="height:auto; float: right;" alt="" width="260" height="260" class="avatar avatar-user width-full border color-bg-primary" src="https://scontent.ftpe11-1.fna.fbcdn.net/v/t1.6435-9/117348728_3913192132041270_6551977455203003650_n.jpg?_nc_cat=109&ccb=1-3&_nc_sid=174925&_nc_ohc=ZGNsAkUX8k4AX9k3Xf5&_nc_ht=scontent.ftpe11-1.fna&oh=7f7763bbdeaa13ce7f69d848509fa1c3&oe=60CE1C98">
- COSCUP 2021 IT Team Lead
- COSCUP 2021 Speaker
- SITCON 2020 Speaker
- Deno Taiwan 社群管理員
- AwesomeCS 站長
- 熱愛參與資訊競賽
- 參加兩次 IT 幫鐵人賽,目前計畫在今年挑戰雙主題
- KKBOX Hackathon 2020 - 第一名
- 成大 ITSA GEEK - 晉級決賽
- Bamboofox CTF - Rank: 144/964
- PicoCTF 2021 - Rank: 341/6215 (5%)
- MyfirstCTF Rank: 10/282
- 在學學生 (北科電子 | 交大資工所)
- 目前在自學系統程式以及程式安全
## 今天談什麼?
- [Von Neumann Architecture](https://github.com/ianchen0119/AwesomeCS/wiki/1-1-%E4%B8%80%E6%AD%A4%E6%90%9E%E6%87%82-ISA%E3%80%81CISC-%E8%88%87-RISC)
### 老師...我想自幹 ISA...
- 組合語言
我自定了一個 ISA 叫做 Easy-ISA :
> Easy-ISA 有以下特性:
> - 超級無敵精簡
> - 不能做減法
> - 很廢,如果你的函式變數太多它會扛不住
```
7 (MSB) 0 (LSB)
+--+--+--+--+--+--+--+--+
| | | | | | | | |
+--+--+--+--+--+--+--+--+
```
並且我們假設 Easy-ISA 有 4 個暫存器 r0 - r3 、每個指令與暫存器的長度都是 8 個位元。
其中有幾個暫存器具有特殊用途:
- r0 -> Program counter
- r1 -> function's arg / return value
- r2 -> function's arg / General
- r3 -> General
有了假定的暫存器之後呢,我們就可以來設計組合語言的規格啦!
- 指令規格
- Bit 0, 1 -> opcode
```
0 add
1 mov
2 jump
3 ret
```
- Bit 2, 3 -> rd
- Bit 4, 5 -> rs1 / imm
- Bit 6, 7 -> rs2 / imm
明確的定義好 ISA 後,我們來嘗試把程式碼轉成 Easy-ISA 適用的組合語言吧!
```js=
funtion add(x,y){
return x + y;
}
add(4,3)
```
```assembly
add:
add r3, r1, r2 # r3 = 4 + 3
mov r1, r3 # r1 = r3
ret # return value of r1
```
我們以此基礎,把這些組合語言翻成電腦看得懂的 010101 :
```
10011100
00110101
00000011
```
- [UNIX、BSD 與 Linux 的愛恨情仇](https://github.com/ianchen0119/AwesomeCS/wiki/4-2-UNIX%E3%80%81BSD-%E8%88%87-Linux-%E7%9A%84%E6%84%9B%E6%81%A8%E6%83%85%E4%BB%87)
- [Git](https://github.com/ianchen0119/AwesomeCS/wiki/3-1-Git)
- [Git 練習場](https://gitbook.tw/playground)
- [實際案例](https://github.com/ianchen0119/AwesomeCS/wiki/3-5-%E9%82%A3%E4%BA%9B%E5%A4%9A%E4%BA%BA%E6%B7%B7%E6%88%B0%E7%9A%84%E9%96%8B%E7%99%BC%E7%B6%93%E9%A9%97%E8%AB%87)
- [非本科/零經驗如何取得成功](#非本科如何取得成功)
- [個人推廣](#個人推廣)
## 非本科/零基礎如何取得成功

- 設下目標
- 達成目標所需要的必要元素
- 蒐集必要元素並做出改變
- 發現新目標
- 重複之前的循環...
### 以我為例
- 最初的目標
- 畢業後找個好工作
- 直升研究所
- 成大資工
- 成績這麼爛,怎麼玩?

- [契機](https://www.ptt.cc/bbs/graduate/M.1573283564.A.867.html)
- 參加技術社群研討會
- COSCUP
- MOPCON
- SITCON
- HITCON
- JSDC
- ModernWeb
- GDG DevFest
- 各種社群 Meetup
- 做筆記、不要害怕分享 (費曼式學習法)
- 開源貢獻、大型專案開發
> :+1: 創作之前可以先嘗試模仿
- 區塊鏈論文提交系統
- Deno 入門指南
- 提交程式碼到教學型作業系統 - [mini-riscv-os](https://github.com/cccriscv/mini-riscv-os)
- 執行力不佳怎麼辦?
- 給自己埋一堆無法拖延的任務
- 推薦影片: [Inside the mind of a master procrastinator | Tim Urban](https://www.youtube.com/watch?v=arj7oStGLkU)
- 最後的心靈雞湯
> 當你很努力很想成功的時候,全世界都會幫助你。
## 個人推廣
- [AwesomeCS wiki](https://github.com/ianchen0119/AwesomeCS/wiki)
- [AwesomeCS](https://www.facebook.com/AwesomeComputerScience/)
- [Youtube](https://www.youtube.com/channel/UCaN0t7tYczmrCVLbXljn4tQ)
- [程式安全筆記](https://github.com/ianchen0119/About-Security/wiki)
- [Github](https://github.com/ianchen0119)
### 如何找到我?
- [AwesomeCS](https://www.facebook.com/AwesomeComputerScience/)
- [Linkedin](https://www.linkedin.com/in/ian-chen-88b70b1aa/)
- [IT Help](https://ithelp.ithome.com.tw/users/20110850)
### Q&A
- [slido](https://app.sli.do/event/r9vyf2w9/live/questions)
- 資安自學資源
- [CMU PicoCTF](https://picoctf.org/resources)
- [台科資安](https://www.youtube.com/channel/UC4-PD2BdlYWd807BhJZkjIg)
- [交大網路安全策進會](https://www.youtube.com/c/BambooFox)
{"metaMigratedAt":"2023-06-16T02:21:57.948Z","metaMigratedFrom":"Content","title":"系統發展史與軟體工程","breaks":true,"contributors":"[{\"id\":\"7333ca6e-8194-4198-bafa-dc6af47703ab\",\"add\":4157,\"del\":217}]"}