Как компилятор знает, является ли запущенный код Управляемым или Неуправляемым в .NET Framework - PullRequest
2 голосов
/ 11 марта 2019

При чтении об основах .NET, таких как Managed and Unmanaged code, код, который работает под CLR and developed in .NET framework is managed, а unmanaged does not run under CLR and developed outside the .NET framework. Moreover, думая и зная о practicalities о кодах и how they run и how the compiler knows the type кода, было bit confusing. Так что, чтобы избавиться от этой путаницы, я хотел спросить об этом здесь.

Пожалуйста, дайте мне знать об этом.

Спасибо заранее !! :)

1 Ответ

3 голосов
/ 11 марта 2019

Если вы говорите о компиляторах для таких языков, как C #, VB (.NET) и т. Д., То: с точки зрения компилятора они всегда управляются. Все, что они выводят, является управляемым кодом, то есть IL. Есть места, где C # и т. Д. Получают близко к непосредственному управлению - например:

  • при использовании unsafe кода и "неуправляемых указателей" C # может напрямую взаимодействовать с неуправляемой памятью - но это всегда выражает как сделать это через IL (IL содержит операторы для работы с необработанными указателями)
  • P / Invoke слои могут выражать границы для общения с внешним неуправляемым кодом

Однако в обоих случаях именно JIT-компилятор во время выполнения (или AOT-компилятор, если используется целевая платформа не-JIT), который интерпретирует эти неуправляемые намерения , выраженные в IL , и выводит внутренние данные процессора в реализовать их. Но ... это именно то, что JIT / AOT делает для all IL, так что ... ничего особенного там нет.

Итак: с точки зрения компилятора для языка, такого как C # / VB (.NET), здесь нет реального вопроса: он всегда работает на 100% с точки зрения вывода - и поскольку компиляторы (начиная с Roslyn) также .NET-кода, они также управляются на 100% с точки зрения их фактического выполнения.

Если вы имели в виду что-то другое, стоило бы уточнить вопрос, будучи действительно, действительно конкретным о том, какой сценарий (ы) вы имеете в виду, желательно с примерами.

...