Я читаю книгу «Елементи обчислювальних систем: побудова сучасного комп’ютера за першими принципами» , яка містить проекти, що охоплюють побудову комп’ютера від булевих воріт аж до додатків високого рівня (у такому порядку). Поточний проект, над яким я працюю, - це написання асемблера, використовуючи мою мову на високому рівні, на мій вибір, перевести з коду збірки Hack в машинний код Hack (Hack - це назва апаратної платформи, побудованої в попередніх главах). Хоча обладнання все вбудовано в тренажер, я намагався зробити вигляд, що я справді будую кожен рівень, використовуючи лише інструменти, доступні мені на той момент у реальному процесі.
Це сказало, що мене змусило задуматися. Використовувати мову високого рівня для написання мого асемблера, безумовно, зручно, але для самого першого асемблера, коли-небудь написаного (тобто в історії), чи не потрібно було б це писати в машинному коді, оскільки це все, що існувало на той час?
І співвіднесене питання ... а як сьогодні? Якщо вийде абсолютно нова архітектура процесора з абсолютно новим набором інструкцій та абсолютно новим синтаксисом збірки, як би побудувати асемблер? Я припускаю, що ви все ще можете використовувати існуючу мову високого рівня для генерування бінарних файлів для програми асемблера, оскільки якщо ви знаєте синтаксис як мов збірки, так і машинних мов для вашої нової платформи, то завдання написання асемблера справді просто Завдання аналізу тексту і не пов'язане з цією платформою (тобто потрібно писати машинною мовою цієї платформи) ... саме тому я можу "обдурити" під час написання свого асемблера Hack у 2012 році та використовувати деякий попередній мова високого рівня, щоб допомогти мені.