Что такое нативный код
Перейти к содержимому

Что такое нативный код

Нативный код

Машинный код (также употребляются термины собственный код, или платформенно-ориентированный код, или родной код, или нативный код — от англ. native code ) — система команд (язык) конкретной вычислительной машины (машинный язык), который интерпретируется непосредственно микропроцессором или микропрограммами данной вычислительной машины.

Каждая модель процессора имеет свой собственный машинный язык, хотя во многих моделях эти наборы команд сильно перекрываются. Говорят, что процессор A совместим с процессором B, если процессор A полностью «понимает» машинный код процессора B. Если процессор A знает несколько команд, которых не понимает процессор B, то B несовместим с A.

«Слова» машинного языка называются машинными инструкциями. Каждая из них описывает элементарное действие, выполняемое процессором, такое как «переслать байт из памяти в регистр». Программа — это просто длинный список инструкций, выполняемых процессором. Раньше процессоры просто выполняли инструкции одну за другой, но новые суперскалярные процессоры способны выполнять несколько инструкций за раз. Прямой поток выполнения команд может быть изменён инструкцией перехода, которая переносит выполнение на инструкцию с заданным адресом. Инструкция перехода может быть условной, выполняющей переход только при соблюдении некоторого условия.

Также инструкции бывают постоянной длины (у MISC-архитектур) и диапазонной (у x86 команда имеет длину от 8 до 120 битов).

См также

Wikimedia Foundation . 2010 .

Полезное

Смотреть что такое «Нативный код» в других словарях:

Исполняемый код — Эта статья о системе команд в целом; об инструкциях см.: Код операции (информатика). Машинный код (также употребляются термины собственный код, или платформенно ориентированный код, или родной код, или нативный код от англ. native code) система… … Википедия

Платформенно-ориентированный код — Эта статья о системе команд в целом; об инструкциях см.: Код операции (информатика). Машинный код (также употребляются термины собственный код, или платформенно ориентированный код, или родной код, или нативный код от англ. native code) система… … Википедия

Родной код — Эта статья о системе команд в целом; об инструкциях см.: Код операции (информатика). Машинный код (также употребляются термины собственный код, или платформенно ориентированный код, или родной код, или нативный код от англ. native code) система… … Википедия

Сравнение языков программирования — Эту статью следует викифицировать. Пожалуйста, оформите её согласно правилам оформления статей.  Условные обозначения  … Википедия

Интерпретируемый язык программирования — язык программирования, в котором исходный код программы не преобразовывается в машинный код для непосредственного выполнения центральным процессором (как в компилируемых языках), а исполняется с помощью специальной программы интерпретатора. В… … Википедия

Машинная инструкция — Эта статья о системе команд в целом; об инструкциях см.: Код операции (информатика). Машинный код (также употребляются термины собственный код, или платформенно ориентированный код, или родной код, или нативный код от англ. native code) система… … Википедия

Машинный язык — Эта статья о системе команд в целом; об инструкциях см.: Код операции (информатика). Машинный код (также употребляются термины собственный код, или платформенно ориентированный код, или родной код, или нативный код от англ. native code) система… … Википедия

Мобильная игра — Часть серии … Википедия

OCaml — Objective Caml Семантика: мультипарадигменный: функциональный, объектно ориентированный, императивный Автор(ы): INRIA Релиз: 4.00.1 (5 октября … Википедия

Что такое нативный код?

Понятие нативный код — код который поставляется разработчиками чего-либо. Как например весь код в Java SDK под Android считается нативным. Все библиотеки третих разработчиков уже нет.

Бред. Нативный код — код, компилируемый в машинные инструкции и выполняемый непоредственно процессором устройства. Любой код на Java не нативен по определению, так как выполняется на виртуальной машине. Нативный код могут писать как разработчики платформы, так и третьи разработчики (при помощи упомянутого Android NDK).

В одном слове «нативный» (от англ. native, «родной») недостаточно информации. Необходимо уточнение: родной для кого?

  • Для JVM родной код — байт-код, родной язык — Java (и другие).
  • Для Windows родной код — Portable Executable, родной язык — C++, Delphi и др.
  • Для процессора x86 родной код — инструкции x86, язык — ассемблер.

и т.п. Многие современные приложения выполняются на «слоеном пироге» из платформ: например, написанное на Java приложение выполняется на JVM, которая в свою очередь может выполняться под (или над?) Windows, которая выполняется на процессоре x86. Каждый слой имеет свой нативный код. Код из другого слоя для него не будет нативным, например, для Windows Java-код ненативный.

Родной язык — язык, для которого есть компилятор в родной код (для данной платформы).

user avatar

Обратимся к Wiki

In computing, software or data formats that are native to a system are those that the system supports with minimal computational overhead and additional components. This word is used in such terms as native mode or native code.

Something running on a computer natively means that it is running without any external layer requiring fewer software layers. For example, in Microsoft Windows the Native API is an application programming interface specific for Windows NT kernel, which can be used to give access to some kernel functions, which cannot be directly accessed through a more universal Windows API.

Нативный для среды исполнения код/язык/АПИ/Формат данных и т.д. — это такой, который понимается средой исполнения по умолчанию, без сложных надстроек. Абсолютно четкого определения нет — есть некое «общепринятое» понимание, которое может разниться от человека к человеку.

Для Windows, например, нативным является исполняемый код в формате .exe (или .com ) файла, который работает непосредственно с Win API. Для Unix систем нативным являются бинарные файлы (а, так-же, shell-скрипты внезапно), для JVM нативным является .jar (не только) файл. Т.е. если совсем просто, то нативный код — это тот, который вы скормили установленной из коробки среде исполнения(дабл клик по .exe файлу в Windows) и он исполнился, не ругаясь, что ему не хватает библиотек или фреймворков.

Нативный язык — это это еще более обтекаемое определение. Можно, с оговорками, считать, что нативный для платформы язык — это язык, для которого производителем платформы создана среда разработки/компилятор в нативный код и о поддержке которого они официально заявляют в документации.

PS На ум пришла хорошая аналогия. Уровень знания иностранного языка определяется экзаменами по нему с выставлением оценки: A1,A2,B1,B2,C1,C2. Но есть и еще один уровень владения языком — native. Означает он что человек с детства живет в данной языковой среде, говорит на нем и думает(!) на нем. Уровень native не говорит о грамотности человека, зачастую native хуже знает правила языка, чаще ошибается в грамматике и пунктуации, чем С2, но он для него РОДНОЙ.

Что такое НАТИВНЫЙ язык программирования, и чем от отличается от ненативного?

НАТИВНЫЙ ЯП — тот, код на котором не исполняется сторонним (не предустановленным на ОС) интерпретатором, как в случае с C#, Java, Python и др.

Java на винде не нативна, т. к. JVM надо еще установить на винду.
Но на андроиде Java нативна, ибо JVM там изначально стоит и все приложения ее используют.

Или, в более широком смысле, — вообще не исполняется каким-либо интерпретатором.

В этом смысле нативного инструмента разработки под Android — не существует, а под винду — существует и даже не один — Visual C++ без .NET, C++ Builder, ассемблеры, PureBasic (компилируется посредством компилятора ассемблера) и др.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *