Другие языки программирования и технологии

[Машинный код] Как?

Тема очень интересная! Странно, но ответов на эти вопросы ни где нет. Надеюсь на ваши ответы.

1) Как текст из блокнота, hex-редактора, кхм... компилируется в машинный код?
2) На чём написаны программы, которые переводят текст из hex-редактора в машинный код?
3) Можно ли на маш. коде написать то, чего нельзя написать в языке ассемблера?
4) И, если можно (п. 3), есть ли устройства, которые можно программировать только в машинном коде (не в ASM, не в C). Может какие-нибудь особые контроллеры? =)
AB
Azat Baybrakov
101
1 - Он не компилируется. Чтобы программа выполнилась надо установить указатель инструкции на соотв. инструкцию. Либо Вы это сделаете вручную, либо (если Вы про запускаемые файлы), то файл ещё и должен быть определенного формата. (немного отдельная песня н-р про .com файлы в Windows и ошибки связанные с переполнением буфера и т. п.).

2 - На разном =) На C/С++ часто, но далеко не единственные примеры декомпиляторов.

3 - И да и нет. В ассемблере н-р какой-то версии может не оказаться инструкций, которые поддерживает более новый процессор. соотв. мнемонических команд нет, но есс-но можно выкрутиться заменив их на последовательность байт (db) прямо в исходном коде. Обычно такое разрешают =)) В особо "жирных" случаях ещё и макро-подстановку можно написать.

Кст в ряде случаев н-р в x86 до появления команды CPUID писали на ассемблере некоторые команды именно в 16ричном виде с помощью db, чтобы определить какой процессор как выполнит набор инструкций.

4 - Когда-то так и писали по большому счету. Сейчас чтобы не было более-менее удобных средств разработки - надо быть очень странным разработчиком железки =). Вон "даже" у Ардуино C есть. Не то, что на голом ассемблере. =)
Дмитрий Юрьевич
Дмитрий Юрьевич
84 764
Лучший ответ
1. Блокнот это не hex-редактор. Читайте про PE формат.
2. На чём угодно могут быть написаны программы. Они там и лежат в машинном коде.
3. Нет, не возможно.
Н. И.
Н. И.
84 984
дык язык ассемблера переводит асемблеровский код в набор инструкций, понятных для процессора.

Все иструкции уже "вшиты" в процессор.
За исполнение таких иструкций отвечает БИОС basic input/output system.
вот в принципе и все.

Можете почитать про архитектуру например x86. Станет более понятно
Zi
Ziko
1 738
Azat Baybrakov Вот, насчёт пункта 3 хотел бы спросить. Я слышал про микрокод. Это, вроде, мини-программы, которая расшифровывает "команды процессора" и выполняет? Как я понял, это программный интерфейс, а значит его можно менять. И если можно, то наверное, в маш. кодах, не? =)