From 29075fd652594f7a47ee333041f6605b9cb1f56d Mon Sep 17 00:00:00 2001 From: Tom Willemse Date: Sat, 27 Dec 2014 21:44:45 +0100 Subject: Add articles --- articles/installing-hla-on-archlinux.org | 89 ++++++++++++++++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 articles/installing-hla-on-archlinux.org (limited to 'articles/installing-hla-on-archlinux.org') diff --git a/articles/installing-hla-on-archlinux.org b/articles/installing-hla-on-archlinux.org new file mode 100644 index 0000000..971cc63 --- /dev/null +++ b/articles/installing-hla-on-archlinux.org @@ -0,0 +1,89 @@ +#+TITLE: +#+STARTUP: showall + +* Installing HLA on Archlinux :hla:archlinux: + :PROPERTIES: + :PUBDATE: <2014-12-27 Sat 21:43> + :END: + + I recently started reading [[http://www.nostarch.com/assembly2.htm][The Art of Assembly Language, 2nd + Edition]]. It uses High-Level Assembly language in its code examples + and this requires a special compiler, or assembler, to turn your + code into machine code. + +** Fixing the PKGBUILD + + The compiler, ~hla~, is available on the Archlinux User Repository + [[https://aur.archlinux.org/packages/hla/][here]]. At the time of writing, though, that ~PKGBUILD~ doesn't work + entirely. By default pacman removes all static libraries from the + created packages, which took me a while to find out. Adding the + following line to the ~PKGBUILD~ fixes it: + + #+BEGIN_SRC sh + options=(staticlibs) + #+END_SRC + + I also placed a comment on the AUR page, but there has been no sign + of acknowledgment so far. + +** Running on x86_64 + + After having installed the compiler I got a lot of errors compiling + my very simple hello world application, as typed over from the + book. The gist of them was that it couldn't create 64-bit + executables, which isn't very surprising as HLA seems to be only + for x86 (32-bit) architecture. Another comment on the AUR page + helped that though. One should add the ~-lmelf_i386~ switch to the + ~hla~ command-line. So I put in my =~/.zshrc=: + + #+BEGIN_SRC sh + alias hla="hla -lmelf_i386" + #+END_SRC + + This discovery only came after a few other attempts to install HLA. + +** Alternative: Using Vagrant + + Before I'd read about the ~-lmelf_i386~ command-line switch I was + looking at ways to run a 32-bit operating system inside my + Archlinux installation. There are a few options I'm familiar with: + lxc, Docker and Vagrant. + + At first I tried to create a 32-bit Archlinux container, but the + installation script failed, so I couldn't get that started. Then I + went on to Vagrant, which worked pretty quickly. + + I used the ~ubuntu/trusty32~ box, which can be downloaded by calling: + + : vagrant box add ubuntu/trusty32 + + A very short ~Vagrantfile~: + + #+BEGIN_SRC ruby + # -*- mode: ruby -*- + # vi: set ft=ruby : + + Vagrant.configure(2) do |config| + config.vm.box = "ubuntu/trusty32" + config.vm.provision :shell, path: "vagrant.sh" + end + #+END_SRC + + and then the provision in ~vagrant.sh~: + + #+BEGIN_SRC sh + wget http://www.plantation-productions.com/Webster/HighLevelAsm/HLAv2.16/linux.hla.tar.gz + tar --directory / --extract --file linux.hla.tar.gz + + cat > /etc/profile.d/hla.sh <