繼前一篇在Linux下寫C及C++程式語言後,本篇另外說明如何在Linux下寫組合語言。
組合語言是一種低階程式語言,比較接近機器碼,相對於C++或Java等高階語言,組合語言算是比較難學、難理解的,現在幾乎很多人不接觸的。我在大學時一直很想學組合語言,可惜因為當時對於各項開發環境不了解而作罷。
本篇使用VMware Workstation 12來模擬Ubuntu Server 16.04 LTS 作業系統下的組合語言(x86 Assemblers)環境,撰寫前需要安裝3種軟體如下:
1-安裝vim:如同Windows記事本的功能一樣,可以讓我們在Linux下編寫組合語言,請輸入:
sudo apt-get install vim
輸入密碼後,安裝vim如圖
2-安裝nasm:這是可以將vim編輯存檔的.asm的組合語言程式檔案編譯成.o檔的程式,請輸入:
sudo apt-get install nasm
輸入密碼後,安裝nasm如圖
3-安裝binutils或build-essential:這是很重要的套件,因為內含ld這個程式,沒有ld這個程式,經過nasm編譯輸出的.o檔,無法經過連結成為執行檔,所以務必安裝binutils或build-essential其中一個,那binutils和build-essential的差別在哪?如果單純要開發組合語言只要binutils就行了,如果還有要其他如C或C++程式語言,就必須安裝build-essential,build-essential也有包含組合語言所需套件,也可以安裝build-essential。不過,在此只要先安裝binutils就行了,請輸入:
subo apt-get install binutils
輸入密碼後,安裝binutils如圖
完成上述步驟後,使用組合語言撰寫經典程式 Hello World!
首先,輸入
vim hello_world.asm
編輯如圖下的組合語言並存檔
完成後,輸入
ls
查看該檔hello_world.asm是否存在
開始使用nasm編譯程式,請輸入
nasm -f elf64 hello_world.asm
備註:如果你是用的環境是64位元的一定要使用elf64這個參數,否則後面步驟將無法執行;另如果非64位元的,請用elf這個參數。
接下輸入
ls
可以看到多了一個hello_world.o的檔案
為了將hello_world.o輸出成一個可以執行的檔案,請輸入
ld -s -o hello_world hello_world.o
再輸入
ls
查看有無綠色標駐的hello_world,若有即為成功輸出
輸入
./hello_world
將輸出
Hello World!
字樣
以上就完成在Linux下撰寫組合語言的相關環境囉!
參考:
1-http://docs.cs.up.ac.za/programming/asm/derick_tut/#nasm.note
留言列表