Тема очень интересная! Странно, но ответов на эти вопросы ни где нет. Надеюсь на ваши ответы.
1) Как текст из блокнота, hex-редактора, кхм... компилируется в машинный код?
2) На чём написаны программы, которые переводят текст из hex-редактора в машинный код?
3) Можно ли на маш. коде написать то, чего нельзя написать в языке ассемблера?
4) И, если можно (п. 3), есть ли устройства, которые можно программировать только в машинном коде (не в ASM, не в C). Может какие-нибудь особые контроллеры? =)
Другие языки программирования и технологии
[Машинный код] Как?
1 - Он не компилируется. Чтобы программа выполнилась надо установить указатель инструкции на соотв. инструкцию. Либо Вы это сделаете вручную, либо (если Вы про запускаемые файлы), то файл ещё и должен быть определенного формата. (немного отдельная песня н-р про .com файлы в Windows и ошибки связанные с переполнением буфера и т. п.).
2 - На разном =) На C/С++ часто, но далеко не единственные примеры декомпиляторов.
3 - И да и нет. В ассемблере н-р какой-то версии может не оказаться инструкций, которые поддерживает более новый процессор. соотв. мнемонических команд нет, но есс-но можно выкрутиться заменив их на последовательность байт (db) прямо в исходном коде. Обычно такое разрешают =)) В особо "жирных" случаях ещё и макро-подстановку можно написать.
Кст в ряде случаев н-р в x86 до появления команды CPUID писали на ассемблере некоторые команды именно в 16ричном виде с помощью db, чтобы определить какой процессор как выполнит набор инструкций.
4 - Когда-то так и писали по большому счету. Сейчас чтобы не было более-менее удобных средств разработки - надо быть очень странным разработчиком железки =). Вон "даже" у Ардуино C есть. Не то, что на голом ассемблере. =)
2 - На разном =) На C/С++ часто, но далеко не единственные примеры декомпиляторов.
3 - И да и нет. В ассемблере н-р какой-то версии может не оказаться инструкций, которые поддерживает более новый процессор. соотв. мнемонических команд нет, но есс-но можно выкрутиться заменив их на последовательность байт (db) прямо в исходном коде. Обычно такое разрешают =)) В особо "жирных" случаях ещё и макро-подстановку можно написать.
Кст в ряде случаев н-р в x86 до появления команды CPUID писали на ассемблере некоторые команды именно в 16ричном виде с помощью db, чтобы определить какой процессор как выполнит набор инструкций.
4 - Когда-то так и писали по большому счету. Сейчас чтобы не было более-менее удобных средств разработки - надо быть очень странным разработчиком железки =). Вон "даже" у Ардуино C есть. Не то, что на голом ассемблере. =)
1. Блокнот это не hex-редактор. Читайте про PE формат.
2. На чём угодно могут быть написаны программы. Они там и лежат в машинном коде.
3. Нет, не возможно.
2. На чём угодно могут быть написаны программы. Они там и лежат в машинном коде.
3. Нет, не возможно.
дык язык ассемблера переводит асемблеровский код в набор инструкций, понятных для процессора.
Все иструкции уже "вшиты" в процессор.
За исполнение таких иструкций отвечает БИОС basic input/output system.
вот в принципе и все.
Можете почитать про архитектуру например x86. Станет более понятно
Все иструкции уже "вшиты" в процессор.
За исполнение таких иструкций отвечает БИОС basic input/output system.
вот в принципе и все.
Можете почитать про архитектуру например x86. Станет более понятно
Azat Baybrakov
Вот, насчёт пункта 3 хотел бы спросить. Я слышал про микрокод. Это, вроде, мини-программы, которая расшифровывает "команды процессора" и выполняет? Как я понял, это программный интерфейс, а значит его можно менять. И если можно, то наверное, в маш. кодах, не? =)
Похожие вопросы
- Вопрос по основам машинного кода и бинарного кода. Как это работает в своей основе?
- Как понять машинный код ?(Компилятор переводит исходный код компьютерной программы в машиный код).
- Машинный код.
- сколько чисел в машинном коде ?
- Программирование в машинных кодах.
- Вопрос из разряда компиляторов. На С++ написан код, генерирующий машинный код из команд на языке ассемблер.
- Ассемблер, двоичный код, и машинный код это одно и тоже?
- Как компьютер отличает машинный код?
- Языки програмирования, и машинный код.
- Какой у вас компилятор и язык? У меня блокнот, машинный код