iT邦幫忙

鐵人檔案

2018 iT 邦幫忙鐵人賽
回列表
Software Development

與妖精共舞:在 RISC-V 架構上使用 GO 語言實作 binutils 工具包 系列

在 Unix-like 系統之中,ELF 檔案格式可說是整體運作的基石,然而因為太過底層,不少人雖然知道它的存在,卻只能模糊地理解個概況。

筆者為了自身學習、研究的需求,以正在興起的 RISC-V 開放指令集架構為平台、功能集單純的 GO 語言作為主要武器、參考經典的 GNU Binutils 工具包的功能,透過邊做邊學的方式第一線接觸過去總是沒有好好理解的 ELF 檔案格式。

筆者預計在前 2/3 的部份,按照 binutils 的功能劃分,實作一些原先工具程式的子集,並熟悉 GO 語言原生的 ELF 函式庫;後 1/3 則選擇一些原創專案來開發,以紀錄開發日誌的方式完成鐵人賽。

鐵人鍊成 | 共 30 篇文章 | 29 人訂閱 訂閱系列文 RSS系列文 團隊晶心壯士
DAY 1

第一日:系列文規劃與介紹

總論 在諸多學門之中,資訊科學可說是相當年輕的一支,就算僅僅發展數十年,其不成比例的影響力仍然形塑今日人們的科技生活的所有面向。其中,許多觀念、理論、技術經過...

2017-12-19 ‧ 由 高魁良 分享
DAY 2

第二日:環境架設及過程解析

環境建置 今天就為各位讀者解析建置檔案的主要內容。按照這些步驟做完之後,即使只有 x86 的普通主機,也能夠模擬出 RISC-V 的開發環境來玩啦! 概覽 筆...

2017-12-20 ‧ 由 高魁良 分享
DAY 3

第三日:go 語言環境建置與 go-binutils 專案簡介

前情提要 昨日解析了整個環境建置流程,也簡單介紹了其中元件扮演的角色。今天我們則要開始使用這個環境來實戰了! 建立 go 語言環境 riscv 社群針對 g...

2017-12-21 ‧ 由 高魁良 分享
DAY 4

第四日:readelf 動工!

前情提要 前兩日將 go 語言環境和 go-binutils 專案設定好,也建立了一些 go 語言相關概念與用法知識,今天就要開始來跨出認識 ELF 格式的第...

2017-12-22 ‧ 由 高魁良 分享
DAY 5

第五日:readelf 開發過程之疑難排解

前情提要 昨日實際利用了 go 語言函式庫取得了檔頭內的一定資訊,並且暫且使用 json 格式當作最後的輸出。當然,我們殘留一些未竟之項目,也引導出一些疑問:...

2017-12-23 ‧ 由 高魁良 分享
DAY 6

第六日:收尾 readelf 工具

前情提要 花去一天來解決目前的所有問題,也好好整理了一下 go-binutil 這個野心很大卻又過度幼稚的專案。今日是讓我們兌現諾言的時候了,來完成 read...

2017-12-24 ‧ 由 高魁良 分享
DAY 7

第七日:以組譯器 as 為下一個目標

前情提要與規劃 這個系列文:「與妖精共舞:在 RISC-V 平台上使用 go 語言實作 binutils」在上一篇達成了第一個里程碑,目前的軌跡如下: 環境...

2017-12-25 ‧ 由 高魁良 分享
DAY 8

第八日:組語檔案架構處理

前情提要 昨日確立了下一個階段目標,就是做好 RISC-V 專用二進位編碼與指令之間的轉換函式庫,而最主要的應用就是組譯器 as。筆者也已經盡了努力尋找目前的...

2017-12-26 ‧ 由 高魁良 分享
DAY 9

第九日:as 輸出物件檔之基礎架構實作

前情提要 昨日打下一個簡單的基礎,我們大致完成了解析輸入檔案的進度;事實上,我們將處理結果存放在近似一般 ELF 檔案的行為,也可以視為在幫檔案輸出的部份鋪路...

2017-12-27 ‧ 由 高魁良 分享
DAY 10

第十日:as 初傳捷報

前情提要 昨日都在寫程式,馬不停蹄地寫,導致篇幅看起來沒有很多,但筆者卻實在是已經累炸啦!而且更累的是寫完之後滿滿都是 bug!正向思考術告訴我們這都是學習的...

2017-12-28 ‧ 由 高魁良 分享