在 Unix-like 系統之中,ELF 檔案格式可說是整體運作的基石,然而因為太過底層,不少人雖然知道它的存在,卻只能模糊地理解個概況。
筆者為了自身學習、研究的需求,以正在興起的 RISC-V 開放指令集架構為平台、功能集單純的 GO 語言作為主要武器、參考經典的 GNU Binutils 工具包的功能,透過邊做邊學的方式第一線接觸過去總是沒有好好理解的 ELF 檔案格式。
筆者預計在前 2/3 的部份,按照 binutils 的功能劃分,實作一些原先工具程式的子集,並熟悉 GO 語言原生的 ELF 函式庫;後 1/3 則選擇一些原創專案來開發,以紀錄開發日誌的方式完成鐵人賽。
總論 在諸多學門之中,資訊科學可說是相當年輕的一支,就算僅僅發展數十年,其不成比例的影響力仍然形塑今日人們的科技生活的所有面向。其中,許多觀念、理論、技術經過...
環境建置 今天就為各位讀者解析建置檔案的主要內容。按照這些步驟做完之後,即使只有 x86 的普通主機,也能夠模擬出 RISC-V 的開發環境來玩啦! 概覽 筆...
前情提要 昨日解析了整個環境建置流程,也簡單介紹了其中元件扮演的角色。今天我們則要開始使用這個環境來實戰了! 建立 go 語言環境 riscv 社群針對 g...
前情提要 前兩日將 go 語言環境和 go-binutils 專案設定好,也建立了一些 go 語言相關概念與用法知識,今天就要開始來跨出認識 ELF 格式的第...
前情提要 昨日實際利用了 go 語言函式庫取得了檔頭內的一定資訊,並且暫且使用 json 格式當作最後的輸出。當然,我們殘留一些未竟之項目,也引導出一些疑問:...
前情提要 花去一天來解決目前的所有問題,也好好整理了一下 go-binutil 這個野心很大卻又過度幼稚的專案。今日是讓我們兌現諾言的時候了,來完成 read...
前情提要與規劃 這個系列文:「與妖精共舞:在 RISC-V 平台上使用 go 語言實作 binutils」在上一篇達成了第一個里程碑,目前的軌跡如下: 環境...
前情提要 昨日確立了下一個階段目標,就是做好 RISC-V 專用二進位編碼與指令之間的轉換函式庫,而最主要的應用就是組譯器 as。筆者也已經盡了努力尋找目前的...
前情提要 昨日打下一個簡單的基礎,我們大致完成了解析輸入檔案的進度;事實上,我們將處理結果存放在近似一般 ELF 檔案的行為,也可以視為在幫檔案輸出的部份鋪路...
前情提要 昨日都在寫程式,馬不停蹄地寫,導致篇幅看起來沒有很多,但筆者卻實在是已經累炸啦!而且更累的是寫完之後滿滿都是 bug!正向思考術告訴我們這都是學習的...