hello.c):主要包含一個 main() 函數,呼叫 printf 來輸出文字 "Hello, World"。hello.s):
.text 指令來進入文本段,並使用 .align 指令來對齊程式碼。main: 標籤定義了 main 函數的起始位置,組合語言中使用偽指令(pseudoinstruction)來進行堆疊管理、暫存器存取、函數呼叫(例如 printf)。str1, str2)進行輸出,並進行相應的堆疊回收與返回處理。addi, sw, lui, auipc 這些指令都轉換成了具體的機器碼。main 是全局的文本段,str1 和 str2 分別是本地的資料段。str1, str2)需要在連結過程中確定它們的絕對位址,這些符號會被列入重定位表中,待連結器來處理。str1, str2 的位址轉換為機器碼中可用的位址。lui 和 addi 指令的位址計算過程使用了 20 位和 12 位的立即數進行分割和處理。addi 指令進行符號擴展,來生成 32 位的立即數。例如 str1 的位址 0x20A10,其 12 位立即數部分帶有負號位。lui 和 addi 指令,將位址分成上 20 位和下 12 位來處理,最後正確計算出 str1 的位址。