Как я начинаю изучать блок

Я думаю , современная Реализация Компилятора в ML является лучшим вводным компилятором, пишущий текст. Существует версия Java и версия C также, любой из которых мог бы быть более доступным, учитывая Ваше образование языков. Книга упаковывает много полезного основного материала (сканирование и парсинг, семантический анализ, записи активации, выбор инструкции, RISC и x86 поколение собственного кода) и различные "усовершенствованные" темы (компилирующий OO и функциональные языки, полиморфизм, сборку "мусора", оптимизацию и единственную статическую форму присвоения) в относительно небольшое пространство (~500 страниц).

я предпочитаю современную Реализацию Компилятора книге Дракона, потому что современная реализация Компилятора рассматривает меньше поля - вместо этого это имеет действительно твердое покрытие всех тем, которые необходимо было бы записать серьезному, достойному компилятору. После работы через эту книгу, Вы будете готовы заняться научно-исследовательскими работами непосредственно для большей глубины при необходимости в нем.

я должен признаться, что имею серьезную слабость к Niklaus Wirth Конструкция Компилятора. Это доступно онлайн как PDF. Я нахожу программирование Wirth эстетичным просто красивый, однако некоторые люди находят его стиль слишком минимальным (например, Wirth одобряет синтаксические анализаторы с рекурсивным спуском, но большую часть внимания курсов CS на инструменты парсера-генератора; проекты языка Wirth довольно консервативны.) Конструкция компилятора является очень сжатой дистилляцией основных идей Wirth, поэтому нравится ли Вам его стиль или не или нет, я настоятельно рекомендую чтение этой книги.

18
задан Rich Bradshaw 20 July 2009 в 17:50
поделиться

5 ответов

Я предлагаю работать с лучшим производителем ассемблера: gcc.

Напишите простые программы на C, а затем скомпилируйте их с ключом -S. вы получите файл .s, содержащий код ассемблера. Повозитесь с этим, и вы научитесь этому. Самое приятное то, что если вы хотите изучить другой ассемблер, вы можете просто скомпилировать gcc как кросс-компилятор и создать ассемблер для любой поддерживаемой платформы.

Не забудьте отключить оптимизацию с помощью -O0, иначе вы можете найти странные уловки.

Это привет, мир на ассемблере

    .cstring
LC0:
    .ascii "hello world!\0"
    .text
.globl _main
_main:
    pushl   %ebp
    movl    %esp, %ebp
    pushl   %ebx
    subl    $20, %esp
    call    L3
"L00000000001$pb":
L3:
    popl    %ebx
    leal    LC0-"L00000000001$pb"(%ebx), %eax
    movl    %eax, (%esp)
    call    L_puts$stub
    movl    $0, %eax
    addl    $20, %esp
    popl    %ebx
    leave
    ret
    .section __IMPORT,__jump_table,symbol_stubs,self_modifying_code+pure_instructions,5
L_puts$stub:
    .indirect_symbol _puts
    hlt ; hlt ; hlt ; hlt ; hlt
    .subsections_via_symbols
17
ответ дан 30 November 2019 в 08:58
поделиться

Несколько (хорошо, много) лет назад я взял в руки книгу Питера Нортона по сборке http://www.amazon.com/ Ассемблер-Язык-Праймер-Персональный компьютер / dp / 0136619010 . Это был фантастический способ начать программирование сборки для ПК. Интересно, можете ли вы все еще получить это и использовать DOSbox для работы с ним.

2
ответ дан 30 November 2019 в 08:58
поделиться

Что ж, даже если это не то, что некоторые люди называют «лучшей» сборкой, я бы рекомендовал изучить X86 / X86-64, так как он наиболее широко используется. Чтобы запустить программу, вы можете просто использовать GCC, чтобы перевести ее в двоичный файл, а затем запустить через консоль.

1
ответ дан 30 November 2019 в 08:58
поделиться

Присоединяйтесь к сообществам, которые преуспевают в ассемблерном коде. Первое, что приходит на ум, - это демосцена. Например, ознакомьтесь с продукцией, выпущенной для компьютеров Mac x86 на pouet.net . Попробуйте связаться с некоторыми кодировщиками в активных группах. Некоторые из них могут быть готовы поделиться идеями и кодом и, возможно, даже побудить вас написать свой собственный.

Так я начал в те дни, но на 8-битной Atari.

0
ответ дан 30 November 2019 в 08:58
поделиться

Я изучил MIPS и протестировал SPIM для класса по «компьютерной организации».

Не уверен, что эта книга будет работать, но, возможно, стоит попробовать. Мы использовали «книгу» (больше похожую на учебник, а на самом деле шпаргалку), написанную профессором, поэтому в противном случае она недоступна.

0
ответ дан 30 November 2019 в 08:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: