Быстро не получится. Даже в самом с..ном 8 битном контроллере регистровый файл состоит примерно из 16-32 штук регистров. Как вы будете помнить что и где лежит ? Тут думать придётся немного по другому. Ну и так далее. Вас случайно не только только на работу приняли???
Нее мне вообще это для ВУЗа нужно - задание, так что асм без комментариев(или некий псевдоасм, но на нём не реализуешь вызов функций). Я точно не знаю как глубоко мне нужно знать ассемблер, чтобы реализовать простой язык с функциями, работающий только с целыми числами.
Ассемблер учится практически моментально. Тебе же, я так понимаю, выучить надо не его, а набор комманд и конкретные особенности конкретного проца. Быстро не получится. ;(
На хера помнить, где что лежит, когда ты пишешь компилятор? Компилятор будет помнить, а тебе только эффективный register scheduling реализовать остаётся.
Напиши компилятор для JVM тогда. Под стековые машины всегда сильно проще компилять, там промежуточный код очень простой, не надо с трёхадресным кодом и register scheduling заморачиваться.
Я написал много разных компиляторов, под самые разные платформы - но ни для одной не выучил ассемблер на таком уровне, чтобы писать на нём самому (кроме, разве что, VAX, z80 и x86, и то - не так уж много писать пришлось). Не нужно ассемблер знать для написания компилятора, совсем. Надо в справочник поглядывать изредка, ну и знать, сколько регистров есть, и какие они.
1. Bartlett Publishing, Programming From The Ground Up by Jonathan Bartlett 2004 - самые азы, описание вызова функций, работа с памятью, файлами итп. Наверное даже должно хватить.
2. Wrox, Professional Assembly Language by Richard Blum 2005 - это зэ бест. Все вплоть до оптимизаций с ммх и ссе.
Обе под линуксовый асм. В первой еще была ссылка на доку по abi, там более подробно описывалась реализация функций. Обе скорее всего должны быть в осле.
Легко. Тупо переписывая справочник в спецификацию, понятную твоему компилятору - сколько какая инструкция стоит, какие регистры изменяются косвенно какой иснтрукцией, и т.п. При этом, переписывая следующую инструкцию, предыдущую можно смело забыть.
Я сейчас много и часто делаю компиляторы микроязычков под JVM. Я не помню практически ни одной инструкции JVM при этом. И меня это не смущает нисколько.
Ася 128782992 шутки ради сделал подобную штуку на питоне. Оно как калькулятор + левые опкоды на ввод и вывод данных. Минут за 5 можно добавить всего, что угодно.