Важная информация

User Tag List

Страница 2 из 3 ПерваяПервая 123 ПоследняяПоследняя
Показано с 11 по 20 из 23

Тема: try-catch на ассемблере z80

  1. #11
    Guru
    Регистрация
    03.01.2006
    Адрес
    Рязань
    Сообщений
    2,935
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

  2. #12
    Veteran
    Регистрация
    08.05.2007
    Адрес
    Dnepropetrovsk
    Сообщений
    1,058
    Спасибо Благодарностей отдано 
    220
    Спасибо Благодарностей получено 
    47
    Поблагодарили
    31 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Vitamin Посмотреть сообщение
    для предотвращения утечек динамически выделяемых ресурсов. На спеке такая модель не используется
    Ну как же не используется? В оконных менеджерах обычно требуется динамически выделяемая память для сохранения содержимого экрана под окнами. Я еще в 1995г сделал на спеке менеджер кучи, да и уверен, кроме моей были и другие реализации. Любая ось, в том числе синклер-бейсик, выделяет динамические ресурсы. RST 8 в бейсике - простейший случай реализации исключений, хоть и одноуровневый.

  3. #13
    Vitamin C++ Аватар для Vitamin
    Регистрация
    14.01.2005
    Адрес
    Таганрог, Россия
    Сообщений
    4,258
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    84
    Поблагодарили
    36 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Barmaley_m Посмотреть сообщение
    Ну как же не используется? В оконных менеджерах обычно требуется динамически выделяемая память для сохранения содержимого экрана под окнами. Я еще в 1995г сделал на спеке менеджер кучи, да и уверен, кроме моей были и другие реализации. Любая ось, в том числе синклер-бейсик, выделяет динамические ресурсы. RST 8 в бейсике - простейший случай реализации исключений, хоть и одноуровневый.
    Для сохранения экрана под окнами использовалась стековая модель обычно. Равно как и для бейсика. Назвать это кучей язык не поворачивается.

  4. #14
    Veteran
    Регистрация
    08.05.2007
    Адрес
    Dnepropetrovsk
    Сообщений
    1,058
    Спасибо Благодарностей отдано 
    220
    Спасибо Благодарностей получено 
    47
    Поблагодарили
    31 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

  5. #15
    Vitamin C++ Аватар для Vitamin
    Регистрация
    14.01.2005
    Адрес
    Таганрог, Россия
    Сообщений
    4,258
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    84
    Поблагодарили
    36 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Barmaley_m Посмотреть сообщение
    Динамически выделенные ресурсы необходимо освобождать при любой модели их организации, будь то куча, стек или еще что-то. Ключевой момент здесь в том, что имеет место динамическое выделение, а куча или не куча - дело десятое.
    Ну да, если подойти с этой стороны, то вполне вписывается. Подойдем с другой стороны: используется ли на спеке "альтернативный ход выполнения программ" (сиречь исключения)? Как работает вышеупомянутый RST8?

  6. #16
    Veteran
    Регистрация
    08.05.2007
    Адрес
    Dnepropetrovsk
    Сообщений
    1,058
    Спасибо Благодарностей отдано 
    220
    Спасибо Благодарностей получено 
    47
    Поблагодарили
    31 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Я думал, ты в курсе, как работает RST 8, но если нет - поясню. Он восстанавливает SP из системной переменной ERR_SP и выполняет возврат. Таким образом, при выполнении RST 8 где-нибудь во вложенной подпрограмме из бейсика, выполняется "ускоренный возврат" на верхний уровень исполнения. При этом освобождается ресурс - стек, на котором хранятся адреса вложенных подпрограмм и сохраненные значения регистров. Временно выделенная память не освобождается, но по-видимому, RST 8 не используется в тех местах бейсика, где нужно освобождать временно выделенную память, либо такое освобождение реализуется до вызова RST 8, то есть в обход механизма исключений.

    Если RST 8 срабатывает при проверке синтаксиса - то бейсик отображает знак вопроса в редактируемой строке, в противном случае - печатает сообщение об ошибке. То есть налицо некое подобие блоков TRY/CATCH, так как по RST 8 возврат не всегда происходит в одно и то же место кода.

  7. #16
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  8. #17
    Vitamin C++ Аватар для Vitamin
    Регистрация
    14.01.2005
    Адрес
    Таганрог, Россия
    Сообщений
    4,258
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    84
    Поблагодарили
    36 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Barmaley_m Посмотреть сообщение
    Я думал, ты в курсе, как работает RST 8
    Откуда? Я как-то кишками бейсика никогда не интересовался

    Цитата Сообщение от Barmaley_m Посмотреть сообщение
    То есть налицо некое подобие блоков TRY/CATCH, так как по RST 8 возврат не всегда происходит в одно и то же место кода.
    Тогда уж это скорее longjmp.

  9. #18
    Veteran
    Регистрация
    08.05.2007
    Адрес
    Dnepropetrovsk
    Сообщений
    1,058
    Спасибо Благодарностей отдано 
    220
    Спасибо Благодарностей получено 
    47
    Поблагодарили
    31 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Vitamin Посмотреть сообщение
    Откуда? Я как-то кишками бейсика никогда не интересовался
    А зря! Бейсик написан умными людьми, я почерпнул оттуда немало идей, изучая Ян-логановский дизассемблер. Не говоря уже о том, что узнал некоторые полезные и малоизвестные особенности бейсика, которые потом использовал в своих прогах.
    Цитата Сообщение от Vitamin Посмотреть сообщение
    Тогда уж это скорее longjmp.
    Который, в свою очередь, (см. Википедия Longjmp) обычно используется для реализации в языке C механизма исключений. Средства разные, концепция одна.

  10. #19
    Guru
    Регистрация
    03.01.2006
    Адрес
    Рязань
    Сообщений
    2,935
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Можно передавать ошибки насквозь через флаг CY. Но в таком стиле надо писать ВСЕ подпрограммы.

  11. #20
    Vitamin C++ Аватар для Vitamin
    Регистрация
    14.01.2005
    Адрес
    Таганрог, Россия
    Сообщений
    4,258
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    84
    Поблагодарили
    36 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Barmaley_m Посмотреть сообщение
    Который, в свою очередь, (см. Википедия Longjmp) обычно используется для реализации в языке C механизма исключений. Средства разные, концепция одна.
    Цитата Сообщение от alone Посмотреть сообщение
    Можно передавать ошибки насквозь через флаг CY. Но в таком стиле надо писать ВСЕ подпрограммы.
    Обращая внимание только на одну сторону исключений (альтернативный ход выполнения программы), начисто упускается другая- передача информации об этом исключении (т.е. объект исключения). В этой ситуации longjmp и прочие костыли выглядят весьма бледно.

Страница 2 из 3 ПерваяПервая 123 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Арифметические процедуры на ассемблере
    от spensor в разделе Программирование
    Ответов: 27
    Последнее: 13.05.2017, 20:56
  2. Пишем на ассемблере под эмулятором
    от GM BIT в разделе Для начинающих
    Ответов: 76
    Последнее: 15.07.2016, 20:04
  3. Ответов: 6
    Последнее: 07.02.2016, 11:55
  4. Ответов: 30
    Последнее: 14.01.2011, 15:13
  5. Подпрограмма на ассемблере в памяти?
    от jimled в разделе Программирование
    Ответов: 1
    Последнее: 29.11.2009, 06:46

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •