Информация об изменениях

Сообщение Re[29]: 32/64/AnyCPU - что за @$^%$? от 02.11.2016 8:17

Изменено 02.11.2016 8:20 Serginio1

Здравствуйте, Sinix, Вы писали:

S>Здравствуйте, Serginio1, Вы писали:


S>>Это все интересно. Ответь для себя CIL это язык или Байт код?

S>>NGEN это скомпилированный код или КОД для VM?

S>Да всё правильно tranzit расписал. Терминология не совпадает с официальной от MS, да.

S>С CIL вечно путаница — под ним понимают и CIL bytecode и CIL как язык, из контекста обычно понятно. Ув. tranzit, очевидно, имел в виду первое.

S>Ну и вместо VM обычно используется или execution engine (если речь про конкретную реализацию) или virtual execution system (если речь об абстрактном описании аля ECMA-335).


Угу

3 компилятор преобразует исходный текст программы в машинный код или в код виртуальный
машины (по другому абстрактной как раз этот код потом исполняется виртуальной машиной например Java, perl, Lua, .Net, ...)
как понимаешь виртуальная машина не абстрактное понятие а конкретное приложение и исполняет конкретный байт код
который сформировал соответствующий конкретный компилятор из конкретного языка программирования


Как это относится к NGEN?

4б Но средой исполнения, например для байт кода, может выступать и виртуальная машина, которая кроме исполнения
байт кода может предложить и дополнительные услуги,компиляция в нативный код, сборщик мусора, доступ к
оборудованию (например звуковой карте и т.д.)


Очень часто используется дополнительная компиляция и в нативном коде для обвязки не объектных Win Api

Опять же .Net Native предлагает сборку мусора. А про оборудование я так и не понял.

6 Виртуальная машина это программа которая является прослойкой между байт кодом и процессором.
виртуальная машина берет байт код и выполняет на целевой системе "интерпретируя" этот код, но заметьте виртуальная машина при этом не становится интерпретатором. Ранее мы уже сказали что интерпретатор анализирует текст программы а не байт код, само слово "код" — и есть ключевое понятие машины и в данном случае виртуальной.

NGEN под это определение не подходит.

Я бы нпросто назвал это среда выполнения. А VM пошло именно от Java, причем когда еще не было Jit компилятора.
Здравствуйте, Sinix, Вы писали:

S>Здравствуйте, Serginio1, Вы писали:


S>>Это все интересно. Ответь для себя CIL это язык или Байт код?

S>>NGEN это скомпилированный код или КОД для VM?

S>Да всё правильно tranzit расписал. Терминология не совпадает с официальной от MS, да.

S>С CIL вечно путаница — под ним понимают и CIL bytecode и CIL как язык, из контекста обычно понятно. Ув. tranzit, очевидно, имел в виду первое.

S>Ну и вместо VM обычно используется или execution engine (если речь про конкретную реализацию) или virtual execution system (если речь об абстрактном описании аля ECMA-335).


Угу

3 компилятор преобразует исходный текст программы в машинный код или в код виртуальный
машины (по другому абстрактной как раз этот код потом исполняется виртуальной машиной например Java, perl, Lua, .Net, ...)
как понимаешь виртуальная машина не абстрактное понятие а конкретное приложение и исполняет конкретный байт код
который сформировал соответствующий конкретный компилятор из конкретного языка программирования


Как это относится к NGEN?

4б Но средой исполнения, например для байт кода, может выступать и виртуальная машина, которая кроме исполнения
байт кода может предложить и дополнительные услуги,компиляция в нативный код, сборщик мусора, доступ к
оборудованию (например звуковой карте и т.д.)


Очень часто используется дополнительная компиляция и в нативном коде для обвязки не объектных Win Api

Опять же .Net Native предлагает сборку мусора. Она тоже VM? А про оборудование я так и не понял.

6 Виртуальная машина это программа которая является прослойкой между байт кодом и процессором.
виртуальная машина берет байт код и выполняет на целевой системе "интерпретируя" этот код, но заметьте виртуальная машина при этом не становится интерпретатором. Ранее мы уже сказали что интерпретатор анализирует текст программы а не байт код, само слово "код" — и есть ключевое понятие машины и в данном случае виртуальной.

NGEN под это определение не подходит.

Я бы нпросто назвал это среда выполнения. А VM пошло именно от Java, причем когда еще не было Jit компилятора.