《汇编语言编程艺术》(The Art of Assembly Language)
使用了一种高级汇编语言HLA ( High Level Assembly ),只能运行在32位linux平台。linux
1、打开32位支持编程
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