среда, 19 декабря 2018 г.

Компиляция приложение на ассемблере в Mac OS X

Данную заметку я решил по-быстрому наклипать, так как абсолютно нигде не нашел толкового ответа как скомпилить самое простое приложение, аля "Hello, World!" на ассме под операционной системой Mac OS X.

4 простых шага для создания приложения.

1. Создаем исходник на асме:
$ nano hello.asm
 
Далее в формате Mach-O:

.section __DATA,__data
str:
  .asciz "Hello world!\n"

.section __TEXT,__text
.globl _main
_main:
  movl $0x2000004, %eax          
  movl $1, %edi                    
  movq str@GOTPCREL(%rip), %rsi   
  movq $100, %rdx                 
  syscall

  movl $0, %ebx
  movl $0x2000001, %eax           
  syscall

2. Создание объектного модуля:
$ as hello.asm -o hello.o
 
3. Компиляция бинарника:
$ ld hello.o -e _main -macosx_version_min 10.8 -o hello -lSystem
 
4. Запуск:
$ ./hello
 
В результате консоль должна выдать сообщение "Hello world!"
Более подробно о формате Mach-O и командах можно почитать здесь.
Об отличиях синтаксиса Intel от AT&T здесь.
О редакторе кода ассемблера для Mac OS X с подсветкой синтаксиса в предыдущей статье.

Комментариев нет:

Отправить комментарий