Чистая функция на ассемблере на Mac - PullRequest
2 голосов
/ 29 ноября 2011

Последовательность Фибоначчи - это отличное приложение «Привет, мир», когда вы начинаете с нового языка.Я хочу создать чисто машинную программу, которая будет выполнять именно это, не тратя ресурсов на промежуточную виртуальную машину, ненужное управление памятью и т. Д.

Лучшее решение - записать код сборки и скомпилировать его в собственные двоичные файлы.Но я никогда не работал с языком ассемблера, так с чего лучше начать?

Я использую 64-битную двухъядерную систему iMac x86.

1 Ответ

4 голосов
/ 29 ноября 2011

Работать с языком ассемблера весело и это отличный способ узнать больше о внутреннем механизме.Я не уверен, что вы тратите столько ресурсов, используя target-c для вычисления последовательности Фибоначчи, но, возможно, вы можете доказать, что я не прав.

Чтобы научиться сборке, начните с чего-то очень простого, а затем добавьте больше функций, входов и выходовпонять системные вызовы и последовательности вызовов функций, а затем стать более креативным.

Обязательно документируйте каждую строку как сложную сборку.

Для Mac OS X

Создайте файл с именем simple.asm: -

; simple.asm - exit

section .text

global simple                ; make the main function externally visible

simple:
    mov eax, 0x1              ; system call number for exit
    sub esp, 4                ; OS X (and BSD) system calls needs "extra space" on stack
    int 0x80                  ; make the system call

Скомпилируйте и свяжите его: -

nasm -f macho simple.asm
ld -o simple -e simple simple.o

Запустите его: -

asm $ ./simple 
asm $ echo $?
1

В Интернете доступно множество бесплатных ресурсов для сборки x86, а также для Intel 64-bitподробности.

http://en.wikibooks.org/wiki/X86_Assembly

http://www.intel.com/content/www/us/en/processors/architectures-software-developer-manuals.html

Посмотрите ресурсы для системных вызовов для ядра bsd и ядра mach для системных вызовов osx.

http://osxbook.com

http://www.freebsd.org/doc/en/books/developers-handbook/x86-system-calls.html

http://peter.michaux.ca/articles/assembly-hello-world-for-os-x

Посмотрите на компоновщики и загрузчики, если вы хотите создать библиотеки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...