Member 13369299 Ответов: 4

В чем разница между MSIL и двоичным кодом?


hello, I have one query, can you please tell me what is a difference between Binary code /Machine code and MSIL code. Someone told me that they both are same but I saw MSIL code and it looks like some kind of Assembly code to me then how can an assembly code is Machine code or Binary code and if it is then why JIT is converting MSIL to native code/machine code.


Что я уже пробовал:

Я спросил свою учительницу, и она сказала, что MSIL-это двоичный код, а JIT просто преобразует необходимый код в машинный.
Я думаю, что двоичный код и машинный код похожи, так зачем же его снова конвертировать. I MSIL-это двоичный код, тогда зачем преобразовывать двоичный код в двоичный код.

4 Ответов

Рейтинг:
23

Mehdi Gholam

"Машинный код" обычно относится к языку/двоичным кодам для физических процессоров, таких как x86, x64, arm, risc и т. д.

MSIL - это язык / двоичный код для виртуальной машины, созданной Microsoft, которая запускается на физических процессорах, а "виртуальная машина времени выполнения", созданная для этого физического процессора, преобразует MSIL в "родной" машинный код для выполнения.

MSIL-это абстракция, поэтому вам не нужно перекомпилировать ваши целевые процессоры, на которых вы хотите работать, и будущие процессоры, если они появятся, все фактические преобразования происходят для вас создателями virtual machine runtime maker.


Рейтинг:
20

GKP1992

Вы можете найти ответ на свой вопрос здесь Здесь машинный код - это двоичный код.

Попробуйте сначала погуглить свой запрос. Есть хороший шанс, что вы найдете ответ.

Удачи в учебе.


Рейтинг:
10

OriginalGriff

MSIL-это двоичный код, но это промежуточный язык, который не привязан к какому - либо конкретному процессору-он нацелен на процессор "виртуальной машины", который не существует. Самые разные .Сетевые компиляторы создают сборку MSIL, и JIT-компилятор преобразует ее для запуска на вашем конкретном процессоре во время выполнения по мере необходимости. "Машинный код "(также называемый" машинным кодом") привязан к определенному семейству процессоров и не может быть запущен в другом месте.

.NET был разработан, чтобы быть мультиплатформенным, поэтому сборки должны были быть независимыми от процессора: не было никакой гарантии, что это будет процессор типа x86, работающий под Windows, на котором будет работать сборка! Генерация промежуточного языка - а именно это означает часть" IL "в" MSIL "- позволяет отправить один и тот же файл сборки на любое устройство, работающее под управлением .NET (или Mono), и он должен" просто работать " независимо от процесса или операционной системы.