在ubuntu系統中配置《彙編語言的編程藝術》開發環境

《彙編語言編程藝術》(The Art of Assembly Language)
使用了一種高級彙編語言HLA ( High Level Assembly ),只能運行在32位linux平臺。linux

1、打開32位支持編程

  1. sudo dpkg --add-architecture i386
  2. sudo apt -get update
  3. sudo apt-get dist-upgrade

2、下載HLA的linux程序bash

http://www.plantation-productions.com/Webster/HighLevelAsm/HLAv2.16/linux.hla.tar.gz架構

解壓後程序在當前目錄下的usr/hla測試

sudo cp -Rf usr/hla /opt/.翻譯

rm -rf usrcode

3、配置環境get

~/.bashrc裏追加it

export hlalib=/opt/hla/hlalib
export hlainc=/opt/hla/include
export PATH=$PATH:/opt/hla

並使之生效io

.  ~/.bashrc

4、測試

cat hw.hla 
program HelloWorld;
#include( "stdlib.hhf" )
begin HelloWorld;
stdout.put( "Hello, World of Assembly Language", nl );
end HelloWorld;

彙編:

$ hla -lmelf_i386 hw.hla

-lmelf_i386是爲了吧-m elf_i386參數傳遞給ld,不然會出現ld: i386 架構於輸入文件 hw.o 與 i386:x86-64 輸出不兼容錯誤。

或者分兩部:

彙編(只產生目標代碼):hlaparse -LINUX hw.hla

連接:ld -m elf_i386  -o hw hw.o /opt/hla/hlalib/hlalib.a
運行:

$ ./hw 
Hello, World of Assembly Language

爲了方便也可在.bashrc中增長別名alias hla='hla -lmelf_i386'
這樣hla hw.hla就不會出錯了

先翻譯成gas格式再彙編和連接:
hlaparse -LINUX -sg  hw.hla
會生成hw.asm

$ as --32 -o hw.o hw.asm $ ld -m elf_i386  -o hw hw.o /opt/hla/hlalib/hlalib.a $ ./hw  Hello, World of Assembly Language

相關文章
相關標籤/搜索