ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
22 ноября
1245945 Топик полностью
Tyмблep (03.10.2022 13:08, просмотров: 329) ответил Dingo на Тоже спрошу. Как оформляются обработчики прерываний? Поймал себя недавно на том, что "и попробовал бы Цэ++, но не знаю, как делается ...". Это одна из базовых вещей.
Если бы разработчики С++ захотели, они бы, вероятно, легко сделали это. 

Для этого надо таблицу прерываний сделать в RAM-е.

И кроме адреса процедуры прерываний хранить там адрес на объект (this).

При инициализации объекта надо занести this в таблицу (очевидно, библиотечной процедурой).

А дальше всё как обычно.

Статическая функция класса с явно заданным параметром this вызывается прерыванием.

Из этой процедуры посредством this вызываются уже не статические функции класса.

Короче, всё как при создании объектов окон, потоков итд для Виндус.

---

Возникает вопрос, а мы сами можем сделать тоже самое ?

Конечно.


1. Можем ли мы предусмотреть указатель, который получит значение this ? Да.

2. Можем ли мы предусмотреть процедуру, которая пропишет указатель значением this ? Да.

3. Можем ли мы вызвать из статической процедуры прерывания функцию класса (используя this) ? Да.

---

Вот поэтому разработчики С++ и не делают специально "поддержку прерываний".

Это просто не нужно.

---

Некоторое время назад я приводил где-то здесь исходные тексты.

Там всё не сложно.