Некоторая ссылка/учебные руководства x86 ASM? [закрытый]

В 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 освободит память, используемую этим объектом, и выделит другую.

27
задан kristianp 2 May 2012 в 12:22
поделиться

5 ответов

26
ответ дан willurd 28 November 2019 в 05:34
поделиться

Я рекомендую Учебный Урок блока ПК Roby . Это также доступно для загрузка . Это содержит схемы и примеры.

"Этот урок блока для конкретного x86, т.е. для Intel 8088, 80286, 80386, и т.д. Да, это совместимо с Вашим Pentium или Pentium III. Пользователи AMD могли также использовать это учебное руководство также, потому что я покрываю только основы. Я предполагаю, что у Вас есть некоторое схватывание на некотором языке программирования как Паскаль, C или C++. Я не хочу пробегаться через фундаментальные понятия программирования снова и снова".

  • Предварительный урок - Низкоуровневые Фундаментальные понятия
    Переговоры о регистрах, флагах, памяти, стеках и прерываниях. Не волнуйтесь о так слишком много. Вы могли бы быть перепутаны с таким количеством понятий. Однако, поскольку Вы следуете за уроком, я думаю каждый, понятия должны быть достаточно ясными.
  • Глава 1 - структура программы COM
    Начинают Вашу поездку в блоке путем наблюдения самой простой структуры программы.
  • Глава 2 - Переменные в блоке
    Обнаруживают уникальное понятие переменных в ассемблере. Понятие является сильно отличающимся, от того из нормального высокоуровневого языка программирования. Я также объясняю, как mov инструкция работает.
  • Глава 3 - Арифметические Инструкции
    , Как мы можем выполнить некоторую арифметику в блоке?
  • Глава 4 - Поразрядная Логика, часть 1
    Используя и, или, и xor для выполнения различных логических задач, включая побитовое маскирование и зеркальное отражение.
  • Глава 5 - Поразрядная Логика, часть 2
    Укусила смещение, и прокрутка может быть полезной в помощи побитовому маскированию, сформулированному в следующей главе.
  • Глава 6 - Ветвление
    Ответвление важно для всех программ. Давайте попробуем некоторые команды ветвления блока улучшить логику наших программ.
  • Глава 7 - Цикл
    инструкция по циклу в блоке может быть полезной для сходства высокоуровневой конструкции языка программирования.
  • Глава 8 - Основы Прерывания
    Используя сервисы прерывания общей системы сделать экранный вывод и берет вход.
  • Глава 9 - Стеки Используя нажатие и поп и знающий, как стек ведет себя. Некоторые детали о крошечном режиме памяти объяснены здесь.
  • Глава 10 - Создание Подпрограмм
    Используя подпрограммы для имитации подхода структурного программирования.
  • Глава 11 - Макросы
    Используя макросы.
  • Глава 12 - Доступ к массиву
    Видит, как блок предоставляет очень сырому доступу к массиву инструкции.
  • Глава 13 - Основная Команда работы со строковыми данными s
    Используя различные команды работы со строковыми данными: movs, lods, cmps, scas, и stos.
  • Глава 14 - Структуры
    Используя структуры как те на высокоуровневых языках. Структура в блоке эквивалентна структуре в C/C++ и записи в Паскале.
  • Глава 15 - Немного Способов адресации Теории
    и режимов памяти, объясненных плюс Архитектура ЭВМ 101.
4
ответ дан Janus Troelsen 28 November 2019 в 05:34
поделиться

Лучший, самый всесторонний источник блока, который я видел," Искусство Ассемблера " книга. Это - бесплатная загрузка в нескольких версиях.

3
ответ дан Kwadz 28 November 2019 в 05:34
поделиться

Для справки, Справочные руководства Intel IA-32 являются окончательным источником.

2
ответ дан Paul Nathan 28 November 2019 в 05:34
поделиться

Я нахожу что Профессиональный Ассемблер быть хорошим началом.

1
ответ дан Calyth 28 November 2019 в 05:34
поделиться
Другие вопросы по тегам:

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