|
0 / 0 / 0
Регистрация: 02.12.2010
Сообщений: 9
|
|
[новичок] проверка существования адреса02.12.2010, 21:08. Показов 1725. Ответов 10
Метки нет (Все метки)
Привет, меня очень интересует каким образом можно проверить существование (доступность) ячейки памяти. Допустим у нас есть программа с адресным пространством с 400000 до 500000 , если я попытаюсь сделать на ассемблере mov [500001],1h то это несомненно вызовет ошибку, потому-что такой адрес будет уже за пределами программы.
У меня конечно же сразу возникла идея даже на основе примера - если известно адресное пространство программы то и проверять разумеется диапазон, но как быть если размер адресного пространства программы неизвестен? Может быть на ассемблере есть небольшая структурка которая может проверить адрес, входит ли (или находится за пределами) адресного пространства программы. p.s. я бы использовал и поиск, но не знаю как задать вопрос чтобы получить информацию именно по моему вопросу...
0
|
|
| 02.12.2010, 21:08 | |
|
Ответы с готовыми решениями:
10
Проверка четности адреса кода Можно ли сделать проверку существования адреса эл.почты
|
|
2537 / 833 / 10
Регистрация: 31.05.2009
Сообщений: 1,668
|
|
| 02.12.2010, 21:19 | |
|
Зачем вам проверять существует ли аддрес в аддресном пространстве программы ? Ну или зачем вам вообще обращаться по каким-либо аддресам напрямую ?
0
|
|
|
0 / 0 / 0
Регистрация: 02.12.2010
Сообщений: 9
|
|
| 02.12.2010, 21:23 [ТС] | |
|
дело в том что обращение происходит само по себе и в некоторых случаях каким-то невообразимым способом идет попытка обращения к несуществующим адресам, я конечно понимаю что лечить нужно проблему и сейчас работаю над тем, чтобы найти почему образуется несуществующий адрес, но как альтернативу я хотел просто воткнуть проверку <если полученный адрес не существует, то пропустить команду mov>
0
|
|
|
2537 / 833 / 10
Регистрация: 31.05.2009
Сообщений: 1,668
|
|
| 02.12.2010, 22:38 | |
|
Как вы уже заметили, лечить нужно причину,а пропускать mov это даже глупо как-то...
Способы, которыми можно поймать обращения к несуществующему, конечно есть, но просто мне кажется что это только отвлечет от поиска ошибки.
0
|
|
|
0 / 0 / 0
Регистрация: 02.12.2010
Сообщений: 9
|
|
| 02.12.2010, 23:58 [ТС] | |
|
и все же, если знаете такие способы то буду за них признателен, искать ошибку я конечно продолжу...
0
|
|
|
Ушел с форума
16373 / 7685 / 1080
Регистрация: 11.11.2010
Сообщений: 13,759
|
|
| 03.12.2010, 04:52 | |
|
ohos, имена переменных и процедур придумали специально для того, чтобы не задумываться по какому адресу эта переменная или процедура расположена. Существует также понятие логических и физических адресов, то есть, если ты считаешь что адрес в твоей программе равен 500001 то это совершенно не значит что в оперативной памяти он расположен в 500001 байте. В связи с тем, что ты работаешь на многозадачной операционной системе в памяти находятся одновременно несколько программ, но каждая из них считает, что она там единственная
0
|
|
|
2537 / 833 / 10
Регистрация: 31.05.2009
Сообщений: 1,668
|
|
| 03.12.2010, 04:57 | |
|
Mikl___, у ТС скорее всего где-то происходит выход за пределы массива или что-то в этом роде, и программа падает при попытке записи в недопустимое место. Вот он и пытается обойти это, убрав сообщение об ошибке
0
|
|
|
4190 / 1838 / 221
Регистрация: 06.10.2010
Сообщений: 4,124
|
|
| 03.12.2010, 07:07 | |
|
Нужно поставить брейк на этот адрес в отладчике и посмотреть.
0
|
|
|
0 / 0 / 0
Регистрация: 02.12.2010
Сообщений: 9
|
|
| 03.12.2010, 23:34 [ТС] | |
|
все дело в том, что функции периодически даются различные адреса и я ни как не могу понять откуда они берутся, я полагаю что адреса передаются ей, но я не понимаю почему код передающий адрес с ячейкой периодически ссылается на разные места, может он является переменной?
т.к. проблема возникает в одной и той же функции я задумался о том, чтобы найти все вызовы функции, но не помню как поставить брикпоинт, чтобы остановка произошла на предыдущей строчке, не подскажите как это сделать?
0
|
|
|
4190 / 1838 / 221
Регистрация: 06.10.2010
Сообщений: 4,124
|
|
| 04.12.2010, 07:25 | |
|
Адрес точки вызова находится в стеке.
Добавлено через 20 минут 1) Запускаешь olly 2) File->open. Выбираешь свой exe 3) Trace->Set Condition. Выбираешь Memory range 1 accesed и вписываешь туда тот адрес по которому идёт обращение on R/W. 4) Debug->Run. Программа дойдёт до места ошибки 5) Правой кнопокой по инструкции обращения к памяти Edit->Fill with NOPs. Инструкция будет заменена нопами. 6) Трассируешь (F8) до возврата в точку вызова
0
|
|
|
0 / 0 / 0
Регистрация: 02.12.2010
Сообщений: 9
|
|
| 04.12.2010, 20:41 [ТС] | |
|
благодарю за ответы, так как я уже получил ответ на вопрос по теме этого топика думаю его можно закрывать
0
|
|
| 04.12.2010, 20:41 | |
|
Помогаю со студенческими работами здесь
11
Проверка на существования ID Проверка существования строки Проверка существования треугольника Проверка существования потока Проверка существования записи Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Загрузка PNG-файла с альфа-каналом с помощью библиотеки SDL3_image на Android
8Observer8 27.01.2026
Содержание блога
SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
|
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
|
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога
SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
|
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога
Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip"
Извлеките архив и вы увидите. . .
|
|
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога
Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д.
Сборка примера
Скачайте. . .
|
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net
REST сервисы временно не работают, только через Web.
Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
|
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
|