Какое устройство использует IN AX, 5 и OUT 5, доступ к AX на IBM PC? [Дубликат]

Ну, простыми словами:

Вы пытаетесь получить доступ к объекту, который не создан или в настоящее время не находится в памяти.

Итак, как это решить:

  1. Отладить и отпустить отладчик ... Он сразу приведет вас к переменной, которая сломана ... Теперь ваша задача - просто исправить это. Используя новое ключевое слово в соответствующем месте.
  2. Если это вызвано некоторыми командами базы данных, потому что объект отсутствует, все, что вам нужно сделать, это выполнить нулевую проверку и обработать его:
    if (i == null) {
        // Handle this
    }
    
  3. Самый сложный. если GC уже собрал объект ... Это обычно происходит, если вы пытаетесь найти объект, используя строки ... То есть, найдя его по имени объекта, может случиться, что GC, возможно, уже очистил его ... Это трудно найти и станет проблемой. Лучшим способом решения этой проблемы является выполнение нулевых проверок везде, где это необходимо в процессе разработки. Это сэкономит вам много времени.

Поиск по имени означает, что некоторые фреймворки позволяют использовать FIndObjects с помощью строк, а код может выглядеть так: FindObject («ObjectName»);

46
задан claws 9 July 2010 в 20:35
поделиться

7 ответов

68
ответ дан Carl Smotricz 26 August 2018 в 18:19
поделиться
  • 1
    Можете ли вы порекомендовать книгу, где я могу больше узнать об этом? ваш ответ - большое спасибо! – Keith Ape 26 April 2016 в 12:37
  • 2
    Я думаю, что я в основном изучал этот материал на курсе компьютерной архитектуры в моем университете около 30 лет назад; поэтому я не могу привести книгу I получил это, извините! Тем не менее, Googling для некоторых релевантных ключевых слов, я нашел многих из них на одной странице в одной книге: amazon.com/… Я ничего не могу рассказать о книге, кроме того, что это с 1995 года, и я не мог видеть, что я плачу за него 149 долларов. Конечно, ваш пробег может варьироваться. – Carl Smotricz 30 April 2016 в 17:23
  • 3
    Отлично сработано. Спасибо за это объяснение. Я давно смущен понятием пространства ИО, поскольку меня учили строго с MMIO. Тот факт, что память и ИО могут считаться адресными для себя, оставляет меня немного смущенным из-за того, что раньше этого не поняли. – sherrellbc 21 February 2017 в 03:44
  • 4
    Я понимаю, как работает MMIO. Возможно, наиболее просто, адрес декодируется таким образом, что целевое оборудование включено (по битам адреса). Как декодируется адрес ввода-вывода? Я подозреваю, что это будет так же. Что же тогда предназначало пространство памяти IO? Это просто другой способ делать вещи или есть преимущества над MMIO? – sherrellbc 21 February 2017 в 03:47
  • 5
    @sherrellbc: Я не эксперт в истории аппаратного обеспечения, но я подозреваю, что это могло быть хорошей идеей в дни, когда «64 КБ памяти должно быть достаточно для кого-то». 16 бит адресуют 64 КБ памяти («стандартное» адресное пространство для устройств x86 в течение хорошего времени), и более удобно не иметь отверстий, вытолкнутых в этом адресном пространстве, путем резервирования его частей для устройств ввода / вывода. Концепция намного менее актуальна в дни MMU, виртуальной памяти и так далее. Опять же, я мог ошибаться в этом предположении. – Carl Smotricz 22 February 2017 в 10:01
10
ответ дан Community 26 August 2018 в 18:19
поделиться
  • 1
    – Ciro Santilli 新疆改造中心 六四事件 法轮功 30 September 2016 в 20:21
  • 2
    Я не спускал вниз, но, несмотря на ваш ответ, я не вижу ответа на исходный вопрос! – Carl Smotricz 6 January 2017 в 13:27
  • 3
    @CarlSmotricz благодарит за отзыв. «Я не вижу ответа на исходный вопрос!» Разве я не ответил на OPs & quot; Что такое IN & amp; OUT для x86? 2) Я никогда не использовал scenerio, где мне нужно было использовать эти инструкции. Когда мне это понадобится? 3) Приведите некоторые практические примеры. довольно прямо? – Ciro Santilli 新疆改造中心 六四事件 法轮功 6 January 2017 в 21:14
  • 4
    Вы дали исчерпывающий ответ на (3), но только краткий взгляд на (2) и вообще не на (1). Кроме того, ваши практические примеры немного напоминают вуду без объяснения того, как инструкции действительно работают на аппаратном уровне. Обратите внимание: мне действительно все равно, и мне нравится, что ваш ответ дает дополнительную информацию. Кроме того, я являюсь одним из ваших "конкурирующих" ответчики, так что, возможно, я не буду критиковать вас. Я только прокомментировал, потому что увидел вашу «пожалуйста, объясните». вопрос и почувствовал, что вы можете использовать честный (догадавшийся) ответ. Конечно, у людей могли быть и другие причины. – Carl Smotricz 7 January 2017 в 21:55
  • 5
    @CarlSmotricz Ваша обратная связь более чем приветствуется Карлом. – Ciro Santilli 新疆改造中心 六四事件 法轮功 8 January 2017 в 00:39
0
ответ дан Evgen Bodunov 26 August 2018 в 18:19
поделиться
3
ответ дан John Saunders 26 August 2018 в 18:19
поделиться
  • 1
    Если вы пишете драйверы, они, безусловно, могут быть использованы. – Jay 9 July 2010 в 20:38
  • 2
  • 3
    @Downvoter: так почему бы вам не рассказать людям, в чем проблема? – John Saunders 11 July 2010 в 05:49
  • 4
    @Downvoter: Кстати, я ответил, прежде чем он что-то сказал о Linux. – John Saunders 11 July 2010 в 06:05
  • 5
    если вы пишете драйвер устройства без тестирования, вы не должны использовать эти инструкции напрямую, если это возможно, но вместо этого c-функции, предоставляемые ядром linux, такие как insb или outsb (явно влияющие на архитектуру x86), чтобы сделать ваш код больше архитектуры портативный. Однако эти функции реализованы с инструкциями по сборке для каждой архитектуры. – Ciro Santilli 新疆改造中心 六四事件 法轮功 11 June 2013 в 13:54
1
ответ дан Jonathan Cast 26 August 2018 в 18:19
поделиться
22
ответ дан Oded 26 August 2018 в 18:19
поделиться
3
ответ дан supercat 26 August 2018 в 18:19
поделиться
Другие вопросы по тегам:

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