# 系統發展史與軟體工程 ![](https://i.imgur.com/oG2OD2o.png) ## 關於我 <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://i.imgur.com/VijA6Yt.png) - 設下目標 - 達成目標所需要的必要元素 - 蒐集必要元素並做出改變 - 發現新目標 - 重複之前的循環... ### 以我為例 - 最初的目標 - 畢業後找個好工作 - 直升研究所 - 成大資工 - 成績這麼爛,怎麼玩? ![](https://i.imgur.com/1b1ZdJ7.jpg) - [契機](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}]"}
    646 views
   Owned this note