Доброго времени суток всем ЛОРовцам!
Начну немного с предистории. Живу под «гордым» названием веб-разработчик. Для клиентов маг и бездарь одновременно (хотя, второе чаще). Для понимающих просто очередной фронтендщик, который пишет велосипеды на ванильке. Помимо JS знаю, наверное, ниже среднего PHP, BASH и Lua. Когда-то учил Basic, Pascal, C и Python. И тут понятно, что не могу я назвать себя программистом - левел не тот. Вот по этой причине и для души хочу начать изучать ассемблер.
А теперь к сути. Почитал немного информации, понял, что есть команды процессора, используя которые мы создаем программу. Эти команды у разных процессоров/архитектур разные. Но как с этим всем работать пока не понял. Исходя из этого у меня есть ряд вопросов:
- Я так понимаю, что текст программы на ассемблере необходимо компилировать, да? Есть какой-нить предустановленный компилятор в GNU/Linux?
- Есть какие-то общие правила написания программ? Что-то вроде var arr; function(){};. Как-то же необходимо связывать меж собой команды процессора. Что это за WASM или TASM?
- Сборка программы на ассемблере возможна не на устройстве, для которого пишется программа? Если сравнивать с компиляцией ядра Linux.
- Я так понимаю, что для «переменных» необходимо жестко указывать ячейку памяти процессора и ОЗУ, да? Что на счет этого стоит учить? Необходимо для старта читать кучу материала о страницах памяти и т.д.?
Планирую начать с чего-то простого, например, Z80 или MC6800. Думаю, завтра у меня еще вопросы будут :) .
В общем, кто что посоветует, с чего начать, где эти основы брать? А то я как по среди моря не вижу куда плыть.
P.S. За ранее всем спасибо!