Выбор правильного и изучение ассемблера для написания компиляторов - PullRequest
5 голосов
/ 23 апреля 2010

Я пишу компилятор и прошел все этапы (токенизация, синтаксический анализ, структуры синтаксического дерева и т. Д.), Которые они показывают во всех книгах по компилятору. (Пожалуйста, не комментируйте со ссылкой на вопрос «Ресурсы для написания компилятора»!).

Я решил использовать NASM вместе с alink в качестве моего бэкэнда.

Теперь моя проблема: я просто не могу найти хороших ресурсов для изучения NASM и сборки в целом.

Wikibook (немецкий) на сборке x86 - ужасный . Они даже не объясняют код, который они там пишут, в настоящее время я не могу даже получить простые вещи, такие как добавление 1 к 2 и вывод результата, работающего.

  • Где я могу изучить сборку NASM x86?

Ответы [ 3 ]

0 голосов
/ 18 мая 2010

Если вы не проверили это, руководство по NASM является хорошим ресурсом для изучения NASM: http://www.nasm.us/doc/

Сравнение NASM и GAS также немного помогает: http://www.ibm.com/developerworks/linux/library/l-gas-nasm.html

irc channel #asm в Freenode se (r) ver предоставляет следующие ссылки:

Я также посвятил некоторое время тому, чтобы растереть для тебя маленький приветственный мир:

bits 32
section .data
    greeting db "hello world", 10
section .text
global _start
_start:
    mov eax, 4 ; sys_write
    mov ebx, 1 ; stdout
    mov ecx, greeting
    mov edx, 12 ; greeting.length
    int 0x80 ; system call interrupt

    mov eax, 1 ; sys_exit
    mov ebx, 0
    int 0x80

Соберите это с:

nasm -f elf -o example.o example.asm
ld -o example example.o -melf_i386

Я сам написал небольшой генератор кода на python. Хотя я оставил эту вещь в середине некоторое время назад. Недавно я написал несколько иной инструмент, который может пригодиться любому, кто занимается сборкой. Прямо сейчас я тоже прошу помощи ... За исключением случаев, когда мне нужно что-то сделать самостоятельно: таблицы кодирования команд x86

Старый кусок генератора кода, который у меня есть, находится в http://bitbucket.org/cheery/g386/, пока я не включу и не запустлю мой новый генератор кода на основе таблиц.

0 голосов
/ 01 марта 2019

Если кто-то все еще ищет учебник по NASM, проверьте следующее: http://cs.lmu.edu/~ray/notes/nasmtutorial/

0 голосов
/ 24 апреля 2010

Хорошо, если вы примете книгу в качестве ссылки. Моим любимым автором в те дни, когда я изучал Паскаль в 80-х годах, был Джефф Дюнтманн. Его последняя сборочная книга посвящена NASM. http://www.duntemann.com/assembly.htm

Не уверен, на какую операционную систему вы нацеливаетесь, но тот факт, что вышеприведенная книга нацелена на Linux, не должен быть проблемой, вам интересны конструкции сборки.

Если честно, фактическая сборка для генерации кода не самая сложная часть, ИМХО, я думаю, что управление регистрами - это то, где происходит настоящее обучение.

Удачи!

...