Страница: 1 |
Страница: 1 |
Вопрос: Блокровка шины ака Атомные операции ака Маскировка
Добавлено: 06.11.08 06:18
Автор вопроса: Morpheus | Web-сайт:
Я аж офигел когда не нашёл нормального ответа на гугле.. видел примеры атомных операций, но ничего в общем виде
Вопрос: как в ассемблере (NASM предпочтительно, под виндой и линухом) сделать атомную операцию из местолькоих строк типа:
-блокировать шину (начать маскировку прерываний)
-делать чё-нить
-разблокировать шину
Можно вообще так сделать? А можно в ВБ?
Спасибо!
Ответы
Всего ответов: 8
Номер ответа: 1
Автор ответа:
Администратор
ICQ: 278109632
Вопросов: 42
Ответов: 3949
Web-сайт:
Профиль | | #1
Добавлено: 06.11.08 21:19
Маскировку прерываний можно организовать на асме, но не на васике) Смотря какая шина. Есть разные способы.
Для шины IDE нужно в порты 20h или 0A0h писать 20h для master и slave соответственно.
Ну либо инструкцией CLI запретить прерывания процессору. ХЗ. Тут конкретный случай важен
Номер ответа: 2
Автор ответа:
Morpheus
Вопросов: 224
Ответов: 3777
Web-сайт:
Профиль | | #2
Добавлено: 06.11.08 23:54
А если мне (не знаю зачем, например в многонитевой проге) надо выплонить след. комманды неделимой операцией:
mov eax, [x]
inc eax
mov [x], eax
то есть классически, считать переменную, увеличить на 1 и записать обратно.
Или , что ближе к истине, но чисто для познавательных целей, подвесить комп намертво..
Есть какой нить общий способ сделать это на x86 ? или всё от материнки зависит? мне надо маскировать в хардверные прерывания
Номер ответа: 3
Автор ответа:
Администратор
ICQ: 278109632
Вопросов: 42
Ответов: 3949
Web-сайт:
Профиль | | #3
Добавлено: 07.11.08 13:24
Из нулевого кольца можно.
Номер ответа: 4
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #4
Добавлено: 07.11.08 14:49
А как из JavaScript выполнить операцию в нулевом кольце?
Номер ответа: 5
Автор ответа:
D o c a l
ICQ: 408802757
Вопросов: 76
Ответов: 985
Web-сайт:
Профиль | | #5
Добавлено: 07.11.08 19:34
))))
Номер ответа: 6
Автор ответа:
Morpheus
Вопросов: 224
Ответов: 3777
Web-сайт:
Профиль | | #6
Добавлено: 08.11.08 01:14
Executioner, а для етого есть АПИ?
Steel Brand, int SetCurrnetRing(int DW_RINGID, int DW_LPARAM, int DW_RPARAM, boolean QUICK_COMPUTERCRASH)
returns a non-zero value if the ring was set, halts the os if the QUICK_COMPUTERCRASH is set to 'true'.
Номер ответа: 7
Автор ответа:
Администратор
ICQ: 278109632
Вопросов: 42
Ответов: 3949
Web-сайт:
Профиль | | #7
Добавлено: 08.11.08 02:48
Конечно! KiMascaradeSystemBus, KiAtomarOperation, KiBlockBus
Номер ответа: 8
Автор ответа:
Morpheus
Вопросов: 224
Ответов: 3777
Web-сайт:
Профиль | | #8
Добавлено: 09.11.08 05:43
нублин...