LINUX.ORG.RU

История изменений

Исправление Vic, (текущая версия) :

Подобные куски можно встретить в отладчике

Кстати, хорошо что вы обратили внимание на отладчик. После работы компилятора получаются машинные коды. Так вот, для того, что бы убедиться и проверить, что компилятор сделал так, как надо, человеку удобно смотреть именно ассемблерный листинг (в мнемониках), а не машинные коды. Так же удобно отлаживать бинарники и загруженные программы по ассемблерному листингу (в мнемониках), а не по машинным кодам. И это не надо путать с отладкой в IDE по исходному коду или листингу от компилятора.

в генераторе кода любого JIT или AOT компилятора, который умеет делать объектный код самостоятельно без внешних утилит

«JIT» и «AOT» это не сами компиляторы, а классификация возможности в какой-то системе на тему запуска и исполнения пользовательских программ, а не «системных».

Например, если мы возьмем любой классический компилятор Си/С++/Ассемблер/Pascal и т.п. - эти программы относятся к классу AOT.

А если начнем рассматривать системы, которые создают свой промежуточный уровень абстракции (скрывая конкретную аппаратуру), например Android, то для исполнения пользовательских программ в нем уже применяется комбинированная техника JIT+AOT (и не важно сколько разных ли встроенных утилит при этом используется).

Так что как бы кто-то не пытался обмануть природу вычислительной техники, базу, в виде ассемблеров и реассемблеров, никуда не деть, потому что ее определяет текущая информационная модель подавляющего большинства процессоров + относительная легкость восприятия человеком отдельных моментов. Т.е. нам приходится копаться в сделанных программах и делать вставки в новых программах, что бы у нас получилось именно то, что задумано на имеющихся процессорах (их инф. модели).

PS.

Эмуляторами сейчас никого не удивишь, хотя, это интересно, познавательно и вообще, круто! Особенно круто, когда эмулируется целая крупная система.

Исправление Vic, :

Подобные куски можно встретить в отладчике

Кстати, хорошо что вы обратили внимание на отладчик. После работы компилятора получаются машинные коды. Так вот, для того, что бы убедиться и проверить, что компилятор сделал так, как надо, человеку удобно смотреть именно ассемблерный листинг (в мнемониках), а не машинные коды. Так же удобно отлаживать бинарники и загруженные программы по ассемблерному листингу (в мнемониках), а не по машинным кодам. И это не надо путать с отладкой в IDE по исходному коду или листингу от компилятора.

в генераторе кода любого JIT или AOT компилятора, который умеет делать объектный код самостоятельно без внешних утилит

«JIT» и «AOT» это не сами компиляторы, а классификация возможности в какой-то системе на тему запуска и исполнения пользовательских программ, а не «системных».

Например, если мы возьмем любой классический компилятор Си/С++/Ассемблер/Pascal и т.п. - эти программы относятся к классу AOT.

А если начнем рассматривать системы, которые создают свой промежуточный уровень абстракции (скрывая конкретную аппаратуру), например Android, то для исполнения пользовательских программ в нем уже применяется комбинированная техника JIT+AOT (и не важно сколько разных ли встроенных утилит при этом используется).

Так что как бы кто-то не пытался обмануть природу вычислительной техники, базу, в виде ассемблеров и реассемблеров, никуда не деть, потому что ее определяет текущая информационная модель подавляющего большинства процессоров.

PS.

Эмуляторами сейчас никого не удивишь, хотя, это интересно, познавательно и вообще, круто! Особенно круто, когда эмулируется целая крупная система.

Исправление Vic, :

Подобные куски можно встретить в отладчике

Кстати, хорошо что вы обратили внимание на отладчик. После работы компилятора получаются машинные коды. Так вот, для того, что бы убедиться и проверить, что компилятор сделал так, как надо, человеку удобно смотреть именно ассемблерный листинг (в мнемониках), а не машинные коды. Так же удобно отлаживать бинарники и загруженные программы по ассемблерному листингу (в мнемониках), а не по машинным кодам. И это не надо путать с отладкой в IDE по исходному коду или листингу от компилятора.

в генераторе кода любого JIT или AOT компилятора, который умеет делать объектный код самостоятельно без внешних утилит

«JIT» и «AOT» это не сами компиляторы, а классификация возможности в какой-то системе на тему запуска и исполнения пользовательских программ, а не «системных».

Например, если мы возьмем любой классический компилятор Си/С++/Ассемблер/Pascal и т.п. - эти программы относятся к классу AOT.

А если начнем рассматривать системы, которые создают свой промежуточный уровень абстракции (скрывая конкретную аппаратуру), например Android, то для исполнения пользовательских программ в нем уже применяется комбинированная техника JIT+AOT (и не важно сколько разных ли встроенных утилит при этом используется).

Так что как бы кто-то не пытался обмануть природу вычислительной техники, базу, в виде ассемблеров и реассемблеров, никуда не деть, потому что ее определяет текущая информационная модель подавляющего большинства процессоров.

PS. Эмуляторами сейчас никого не удивишь, хотя, это интересно, познавательно и вообще, круто!

Исправление Vic, :

Подобные куски можно встретить в отладчике

Кстати, хорошо что вы обратили внимание на отладчик. После работы компилятора получаются машинные коды. Так вот, для того, что бы убедиться и проверить, что компилятор сделал так, как надо, человеку удобно смотреть именно ассемблерный листинг (в мнемониках), а не машинные коды. Так же удобно отлаживать бинарники и загруженные программы по ассемблерному листингу (в мнемониках), а не по машинным кодам. И это не надо путать с отладкой в IDE по исходному коду или листингу от компилятора.

в генераторе кода любого JIT или AOT компилятора, который умеет делать объектный код самостоятельно без внешних утилит

«JIT» и «AOT» это не сами компиляторы, а классификация возможности в какой-то системе на тему запуска и исполнения пользовательских программ, а не «системных».

Например, если мы возьмем любой классический компилятор Си/С++/Ассемблер/Pascal и т.п. - эти программы относятся к классу AOT.

А если начнем рассматривать системы, которые создают свой промежуточный уровень абстракции (скрывая конкретную аппаратуру), например Android, то для исполнения пользовательских программ в нем уже применяется комбинированная техника JIT+AOT (и не важно сколько разных ли встроенных утилит при этом используется).

Так что как бы кто-то не пытался обмануть природу вычислительной техники, базу, в виде ассемблеров и реассемблеров, никуда не деть, потому что ее определяет текущая информационная модель подавляющего большинства процессоров.

PS. Ну а эмуляторами сейчас никого не удивишь.

Исправление Vic, :

Подобные куски можно встретить в отладчике

Кстати, хорошо что вы обратили внимание на отладчик. После работы компилятора получаются машинные коды. Так вот, для того, что бы убедиться и проверить, что компилятор сделал так, как надо, человеку удобно смотреть именно ассемблерный листинг (в мнемониках), а не машинные коды. Так же удобно отлаживать бинарники и загруженные программы по ассемблерному листингу (в мнемониках), а не по машинным кодам. И это не надо путать с отладкой в IDE по исходному коду.

в генераторе кода любого JIT или AOT компилятора, который умеет делать объектный код самостоятельно без внешних утилит

«JIT» и «AOT» это не сами компиляторы, а классификация возможности в какой-то системе на тему запуска и исполнения пользовательских программ, а не «системных».

Например, если мы возьмем любой классический компилятор Си/С++/Ассемблер/Pascal и т.п. - эти программы относятся к классу AOT.

А если начнем рассматривать системы, которые создают свой промежуточный уровень абстракции (скрывая конкретную аппаратуру), например Android, то для исполнения пользовательских программ в нем уже применяется комбинированная техника JIT+AOT (и не важно сколько разных ли встроенных утилит при этом используется).

Так что как бы кто-то не пытался обмануть природу вычислительной техники, базу, в виде ассемблеров и реассемблеров, никуда не деть, потому что ее определяет текущая информационная модель подавляющего большинства процессоров.

PS. Ну а эмуляторами сейчас никого не удивишь.

Исходная версия Vic, :

Подобные куски можно встретить в отладчике

Кстати, хорошо что вы обратили внимание на отладчик. После работы компилятора получаются машинные коды. Так вот, для того, что бы убедиться и проверить, что компилятор сделал так, как надо, человеку удобно смотреть именно ассемблерный листинг (в мнемониках), а не машинные коды. Так же удобно отлаживать программы по ассемблерному листингу (в мнемониках), а не по машинным кодам.

в генераторе кода любого JIT или AOT компилятора, который умеет делать объектный код самостоятельно без внешних утилит

«JIT» и «AOT» это не сами компиляторы, а классификация возможности в какой-то системе на тему запуска и исполнения пользовательских программ, а не «системных».

Например, если мы возьмем любой классический компилятор Си/С++/Ассемблер/Pascal и т.п. - эти программы относятся к классу AOT.

А если начнем рассматривать системы, которые создают свой промежуточный уровень абстракции (скрывая конкретную аппаратуру), например Android, то для исполнения пользовательских программ в нем уже применяется комбинированная техника JIT+AOT (и не важно сколько разных ли встроенных утилит при этом используется).

Так что как бы кто-то не пытался обмануть природу вычислительной техники, базу, в виде ассемблеров и реассемблеров, никуда не деть, потому что ее определяет текущая информационная модель подавляющего большинства процессоров.

PS. Ну а эмуляторами сейчас никого не удивишь.