在ubuntu系统中配置《汇编语言的编程艺术》开发环境

《汇编语言编程艺术》(The Art of Assembly Language)
使用了一种高级汇编语言HLA ( High Level Assembly ),只能运行在32位linux平台。

一、打开32位支持

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

二、下载HLA的linux程序

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

解压后程序在当前目录下的usr/hla

sudo cp -Rf usr/hla /opt/.

rm -rf usr

三、配置环境

~/.bashrc里追加

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

并使之生效

. ~/.bashrc

四、测试

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

相关文章

1.安装过程出现0x00000000指令引用的0x00000000内存该内存不能为written 如果你安装的是inux系统 需要在...
写在全面:如果根据以下教程涉及到只读文件需要更改文件权限才能需修改文件内容,参考我的另一篇博客:...
写在前面:以下步骤中需要在终端输入命令,电脑端查看博客的朋友可以直接复制粘贴到终端,手机端查看的...
ubuntu16.04和18.04更换国内源 写在前面:安装好ubuntu双系统后,默认的软件更新源是国外的,在国内使用...
ubuntu双系统启动时卡死解决办法(在ubuntu16.04和18.04测试无误) 问题描述: 在安装完ubuntu双系统后...
又来造轮子了。。。。。。。。。。。。。。。。 今天使用w3af向文件中写入的时候,发现没有write权限,...