“Ниже” блока существует ли язык программирования? [закрытый]

В Java все переменные, которые вы объявляете, на самом деле являются «ссылками» на объекты (или примитивы), а не самими объектами.

При попытке выполнить один метод объекта , ссылка просит живой объект выполнить этот метод. Но если ссылка ссылается на NULL (ничего, нуль, void, nada), то нет способа, которым метод будет выполнен. Тогда runtime сообщит вам об этом, выбросив исключение NullPointerException.

Ваша ссылка «указывает» на нуль, таким образом, «Null -> Pointer».

Объект живет в памяти виртуальной машины пространство и единственный способ доступа к нему - использовать ссылки this. Возьмем этот пример:

public class Some {
    private int id;
    public int getId(){
        return this.id;
    }
    public setId( int newId ) {
        this.id = newId;
    }
}

И в другом месте вашего кода:

Some reference = new Some();    // Point to a new object of type Some()
Some otherReference = null;     // Initiallly this points to NULL

reference.setId( 1 );           // Execute setId method, now private var id is 1

System.out.println( reference.getId() ); // Prints 1 to the console

otherReference = reference      // Now they both point to the only object.

reference = null;               // "reference" now point to null.

// But "otherReference" still point to the "real" object so this print 1 too...
System.out.println( otherReference.getId() );

// Guess what will happen
System.out.println( reference.getId() ); // :S Throws NullPointerException because "reference" is pointing to NULL remember...

Это важно знать - когда больше нет ссылок на объект (в пример выше, когда reference и otherReference оба указывают на null), тогда объект «недоступен». Мы не можем работать с ним, поэтому этот объект готов к сбору мусора, и в какой-то момент VM освободит память, используемую этим объектом, и выделит другую.

44
задан Brandon Wamboldt 12 May 2014 в 16:59
поделиться

16 ответов

На самом деле существует уровень кода, который находится ниже машинного кода, названного Микрокод .

72
ответ дан Mackie Messer 26 November 2019 в 21:36
поделиться

Даже ниже машинного кода, можно было сказать, VHDL - структура кристалла. Вы не должны даже разрабатывать микросхему, чтобы выполнить код, но просто немедленно преобразовать исходные данные в выводы.

(не, что я - эксперт - я использую C++)

2
ответ дан xtofl 26 November 2019 в 21:36
поделиться

Уверенный: "машинный код", о который, Википедия, в статье об Ассемблере ( http://en.wikipedia.org/wiki/Assembly_language ), говорит: "реализует символьное представление числовых машинных кодов, и другие константы должны были программировать конкретную архитектуру ЦП".

2
ответ дан George Jempty 26 November 2019 в 21:36
поделиться

Вид. Машины не читают блок, они читают "машинный язык", который является тем, во что преобразовывается блок. Машинный язык имеет "коды операций" вместо мнемоники блока, и эти коды операций являются обычно просто двоичными данными. Машинный код обычно не считают человекочитаемым.

В системах RISC, машинный код часто является простым переводом блока, но в x86 системах, в частности, эти два очень отличаются.

2
ответ дан Jacob B 26 November 2019 в 21:36
поделиться

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

2
ответ дан volley 26 November 2019 в 21:36
поделиться

Ассемблер является цокольным этажом языка программирования, создающего, поскольку машинный код не является языком, потому что это не включает правил grammatic следовать. Машинный код может быть единственным форматом данных для выполнения операций микропроцессора: ЦП выбирает данные из памяти и выполняет инструкцию непосредственно согласно выбранному машинному коду.

Однако в некоторых недавних проектах, таких как Intel Pentium 4 и, машинный код является выражением более низкого уровня операции модули выполнения RISC, известные как uops или микрооперации. Таким образом, логика декодирования тех проектов должна перевести инструкции типа CISC в маленькие uops, которые обычно предназначаются для более простой единицы загрузки и хранения, подобной RISC. В этом аспекте мы можем сказать (хотя это не может быть технически точно), что машинный код описывает "высокоуровневые" сложные инструкции архитектуры, не "реальные" операции, которые несет атомарно базовая логика выполнения ЦП.

, Таким образом, у нас есть архитектурная система команд, или архитектурный машинный код и набор "микрокоманды" внутреннего уровня, который скрыт от внешнего мира. Кэш трассировки процессоров Intel был задуман для хранения такой операции в секунду для оптимизации суперскалярной производительности процессора (поскольку ЦП выполняет uops не архитектурная система команд, доступная для выполнения программами).

3
ответ дан Hernán 26 November 2019 в 21:36
поделиться

Ну, существует машинный язык, как другие упомянули. Машинный язык обычно 1 к 1 перевод того, что Вы пишете в блоке, таким образом, это на том же уровне абстракции как ассемблерный код - просто намного тяжелее для записи вручную.

существуют исключения к этому, как эти псевдоинструкции обеспечены ассемблером MIPS.

существует, или возможно я должен сказать , был уровень ниже даже блока/машинного языка: микрокод . Современные бюджеты логического транзистора, являющиеся, каковы они, я подозреваю, что микрокод теряет свою уместность.

3
ответ дан bendin 26 November 2019 в 21:36
поделиться

Ассемблер переводится в машинный код ассемблером. Вы могли записать его с двоичным редактором. (Ай!) компьютеры CISC могут иметь микрокод, который упорядочивает сегменты микросхемы (ALU, выборка памяти, и т.д.). Как правило, никакой микрокод записей, кроме в производителе микросхемы.

3
ответ дан Dan Hewett 26 November 2019 в 21:36
поделиться

Зависит от того, почему Вы спрашиваете. Нет ничего, что Вы не можете сделать в блоке, который можно сделать с помощью некоторого другого метода. Машинный код является просто другим представлением тех же самых данных.

3
ответ дан Mark Ransom 26 November 2019 в 21:36
поделиться

Если ниже, Вы имеете в виду более низкий уровень, то да. Существует машинный язык. Блок превращен на машинный язык, прежде чем это будет выполнено. На многих современных процессах машинный язык эмулирован в микрокоде. См. это для получения дополнительной информации о микрокоде.

8
ответ дан grieve 26 November 2019 в 21:36
поделиться
6
ответ дан Inisheer 26 November 2019 в 21:36
поделиться

И пойти еще ниже, (не, что слово "язык" подходит для языка "машины" или для еще более низких физических уровней), но ниже машинного языка - конфигурация многих логических элементов и переключателей, используемых для фактической реализации каждого двоичного кода операции для конкретных аппаратных средств включенный (ЦП)... Замечательная книга, чтобы считать, который покрывает этот еще более низкий уровень, Charles Petzold, позвонившим" КОД "

13
ответ дан Charles Bretana 26 November 2019 в 21:36
поделиться

Блок является текстовым представлением Машинного кода. Это имеет отдельного оператора, который представляет единственную инструкцию в самом ЦП. "MOV X, Y", например, является единственной инструкцией, которая проходит через ЦП и перемещает значение X в положение Y. Для получения до машинного кода ЦП будет иметь число, которое представляет 'MOV' и число, которое представляет 'X' (если это уже не число), и число, которое представляет Y. Этими необработанными ШЕСТНАДЦАТЕРИЧНЫМИ двоичными значениями является Машинный код. Это - числа, которые заставляют ЦП к постоянным напряжениям / токи через транзисторы заставлять его сделать то, что это делает.

Машинный код ниже находится на одном уровне, но это очень очень близко к блоку. Это настолько близко, что никакой беспокойства с помощью него из-за преимуществ способности прочитать инструкцию "MOV" = перемещение. Имена переменной также становятся читаемыми а не необработанными адресами в стеке или "куче".

18
ответ дан Kieveli 26 November 2019 в 21:36
поделиться

Самые первые компьютеры (ENIAC) использовали трудно проводное соединение так, чтобы произведенный от одного вычисления мог питаться, как введено другому. Для запущения другой программы необходимо было отключить некоторые кабели и повторно соединить их проводом по-другому.

3
ответ дан Stephan Leclercq 26 November 2019 в 21:36
поделиться

Машинный код . Время это были программисты, кодированные в 1 и 0 двоичного файла. Шестнадцатеричное число считали усовершенствованием по этому. Это было перед блоком, который использует имена кода и разделяет части инструкции в ее части.

38
ответ дан sblundy 26 November 2019 в 21:36
поделиться

Думаю, самое низкое, что вы можете получить, - это физика или TRW (Реальный мир). Это то, что разработчики и производители микросхем используют для создания ЦП и других процессоров, которые могут использовать вывод компьютерных языков и превращать их во что-то ценное.

6
ответ дан 26 November 2019 в 21:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: