Задать вопрос

Для кого все же предназначен код, полученный из CIL (байт-кода .net)?

Компилируя исходный код на на .net-совместимом языке, получаем CIL, который впоследствии транслируется виртуальной машиной в, так сказать, "окончательный" код, предназначенный для конкретной платформы.
Обычно можно встретить формулировку вроде "компилируется JIT-компилятором в машинный код".

Однако так уж прямо в машинный ли?

Ведь "машинный код" подразумевает команды, которые процессор может выполнить непосредственно, безо всяких дополнительных преобразований от различного рода трансляторов. Если открыть страницу вики, посвященную Mono, в первом же абзаце можно увидеть, для каких операционных систем существуют реализации моно и какие архитектуры процессоров поддерживаются. То есть вы можете писать в Mono из-под винды, макос, линукса и написанная вами программа будет работать на всех ОС из списка по ссылке (а именно - Windows, Linux, BSD (FreeBSD, OpenBSD, NetBSD), Solaris, Mac OS X, Apple iOS, Wii).

Но сама операционная система может работать не с любой архитектурой процессора.
К чему я веду: если CIL действительно компилируется в машинный код, который уходит непосредственно процессору на исполнение, то зачем указывать список целевых операционных систем?
Может быть тогда все же CIL компилируется в код для операционной системы, которая уже занимается окончательным его переводом в машинный код для процессора?

Ведь даже если вспомнить книгу "Архитектура компьютера" Таненбаума, то там уровень машинных команд находится в самом низу, а над ним несколько других уровней, в частности, уровень 3 операционной системы
(схема)
5c8fa0e71ba70845437399.jpeg
  • Вопрос задан
  • 851 просмотр
Подписаться 3 Простой 5 комментариев
Ответ пользователя # К ответам на вопрос (4)
mindtester
@mindtester Куратор тега C#
http://iczin.su/hexagram_48
хорошо сформулированный вопрос, содержит не менее половины ответа (с)
тут так..
CIL действительно компилируется в машинный код
да, действительно
зачем указывать список целевых операционных систем?
не поверите, но минимальный ответ примерно таков - правильный формат исполняемого файла
ps да да, как подмечено Saboteur, и правильные обращения к ОС, тоже.. или даже на первом месте.. .. эмм.. для CIL.. того же Mono, да проверьте сами! ))
Ответ написан
Комментировать