Линия на самом деле довольно размыта ... аргументы, которые я видел против вызова CIL
, «язык ассемблера» может применяться практически так же, как на практике: x86
/x86-64
.
Intel и AMD не сделали процессоры, которые выполняют инструкции по сборке точно так же, как и в течение десятилетий (если вообще когда-либо), поэтому даже так называемый «собственный» код мало чем отличается от работы на виртуальной машине, байт-код которой указан в x86
/x86-64
.
x86
/x86-64
являются вещи низшего уровня типичные разработчики имеют доступ, так что, если мы должны были поставить нашу ногу вниз и вызвать что-то в нашей экосистеме «ассемблере», что бы выиграть, и с тех пор CIL
байткод в конечном счете, требует x86
/x86-64
Инструкции для работы на процессоре в этом семействе, тогда есть довольно сильный случай, который нужно сделать, чтобы он действительно не «чувствовал», как он должен рассчитывать.
So в некотором смысле, может быть, ни один из них не может считаться «языком ассемблера». Когда речь идет о процессорах x86
/x86-64
, мы почти никогда не обращаемся к процессорам, которые выполняют x86
/x86-64
, не переводя его на что-то другое (то есть, что бы ни делал микрокод).
Чтобы добавить еще одну морщину, способ, которым процессор x86
/x86-64
выполняет заданную последовательность инструкций, может быть изменен просто путем обновления микрокода. Быстрый поиск показывает, что Linux может даже упростить это сделать in software!
Так что я думаю, вот критерии, которые могут оправдать положить их в две отдельные категории:
- это Имеет ли значение, что все современные машины, которые работают
CIL
байткод реализованы в программном обеспечении?
- Имеет ли значение, что одно и то же оборудование может интерпретировать те же самые
x86
/x86-64
инструкциями по-другому после получения инструкций по этому поводу в программном обеспечении?
- Имеет ли значение, что в настоящее время у нас нет способа обхода микрокода и выдачи команд непосредственно физическим устройствам
x86
/x86-64
процессоров?
Так касательно «является CIL
собрание language` вопрос, лучшие ответы, которые я могу дать это„зависит“(для ученых) и„довольно много“(для инженеров).
интересный вопрос, я попробовал ответить, но это не так просто. Я думаю, что вы не можете считать его ассемблером, так как tehre не является реальным процессором, запускающим его напрямую. –
@FelicePollano, тогда CIL может быть частичным ассемблером .. :) – Anirudha
Абонентский язык мнемосхемы соответствуют 1: 1 с инструкциями машинного кода с конкретным процессором. Ассемблер просто сопоставляет (sorta) код, читаемый человеком, с этими инструкциями. Это определенно не относится к CIL. Это не частично, это просто не - сборка возраст имеет очень четкое определение. –