
You could use ADR in Linux and if you do this it will work in both. The MacOS linker/loader doesn’t like doing relocations, so you need to use the ADR rather than LDR instruction to load addresses.You can use LLVM on Linux and GCC should be available for Apple M1 shortly. This really just affects the command line arguments in the makefile for the purposes of this article. MacOS uses LLVM by default whereas Linux uses GNU GCC.However there are a few differences of note: His version of the source code for my book, but modified for Apple M1 is available here:īoth MacOS and Linux are based on Unix and are more similar than different. He dealt with all the differences between Linux and MacOS/iOS as well. Alex vonBelow took all of these and modified them to work with the LLVM tool chain and to work within Apple’s development environment. The command line utilities are compiled for Linux using the GNU tool set.


My book “ Programming with 64-Bit ARM Assembly Language” contains lots of sample self contained Assembly Language programs and a number of iOS and Android samples. This week, we’ll cover how to compile and run a simple command line ARM Assembly Language Hello World program. Last week, we talked about using a new Apple M1 based Macintosh as a development workstation and how installing Apple’s development system XCode also installed a large number of open source development tools including LLVM and make.
