第九屆 優選

software-dev
與妖精共舞:在 RISC-V 架構上使用 GO 語言實作 binutils 工具包
高魁良

系列文章

DAY 21

第二十一日:objdump 實作之一

前情提要 昨日介紹了 objdump 工具程式,今天讓我們開始實作吧! 設計大綱 筆者根據自己的使用經驗與理解,簡化反組譯的過程,列出以下步驟: 讀取 E...

DAY 22

第二十二日:objdump 實作之完結

前情提要 昨日實作了部份的 objdump 工具程式,大致上是完成了讀取檔案和傳送機器編碼的部份。今天就讓我們接著實作下去吧! 回顧:設計大綱 筆者根據自己...

DAY 23

第二十三日:連結的概念

前情提要 目前為止我們已經有了(差強人意的)readelf、objdump、nm、和 as。隨著鐵人賽接近尾聲,筆者決定將時間投資在最沒有確定性的最後一片拼圖...

DAY 24

第二十四日:RISC-V 的重定向項目

前情提要 昨天大概在抽象的層面理解連結這個動作的必要性和最後可以產出的結果,今天就來讓我們一窺 RISC-V 如何提供連結的選項。 RISC-V 的連結選項...

DAY 25

第二十五日:眾裡尋 relocation type 千百度......

前情提要 昨日正準備要有所作為,卻發現上游裡面有根本的短少!這該怎麼辦才好呢?決定今天來好好研究一下貢獻的規則,go 語言社群的規則和 github 上面直接...

DAY 26

第二十六日:探究 Rela 結構

前情提要 昨日在 riscv-go 上面的 riscvdev 分支裡挖掘到了重定向型態短少的原因,也從隔壁的 riscv-binutils-gdb 專案取得了...

DAY 27

第二十七日:readelf 重定擴充

前情提要 昨日直接地閱讀 ELF 檔而找到這些重定的樣貌,今天我們來設法將這些資訊轉給 readelf,藉此累積一些重定內容的操作方式吧! 實作目標 由於我...

DAY 28

第二十八日:as 強化(上)

前情提要 昨日設計了一個更適合接下來的開發的小程式,並且將展示重定區段的功能新增進入 readelf 裡面。今天的目標就是試試看我們能不能產生重定區段,並且讓...

DAY 29

第二十九日:as 強化(下)

前情提要 昨日為 as 的功能加強起了個頭,今天讓我們來完成它吧! 回顧:實作目標 理解 call 虛擬指令,將之轉換為 auipc+jalr 指令配對...

DAY 30

第三十日:結語

學到的東西 既然是最後一篇的總檢討,當然不能列出之前就已經學會的部份。這裡列出的,全部都是這三十天之內累積起來的內容: RISC-V 使用 virtio...