|
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
|
|
програмные прерывания17.08.2019, 19:09. Показов 9281. Ответов 25
Метки нет (Все метки)
Как вызвать программное прерывание? Читаю книгу по системному программированию и в ней сейчас "прохожу тему" системных вызовов и там есть описание как они вызываются и обрабатываются ,так вот
Если программе нужно сделать системный вызов то она вызывает программное прерывание int со значением 0x80 ,далее вызывается обработчик прерываний ,для 0x80 обработчик системных вызовов и далее уже обрабатывается вызов. Каким образом вызывается(или создается) программное прерывание?
0
|
|
| 17.08.2019, 19:09 | |
|
Ответы с готовыми решениями:
25
Програмные требования програмные файлы, что делать? Как запустить програмные файлы |
|
Модератор
13771 / 10964 / 6491
Регистрация: 18.12.2011
Сообщений: 29,241
|
||||||
| 17.08.2019, 19:21 | ||||||
|
Не совсем понял, о чем Вы, но если имеется ввиду исключение,
то делайте примерно так
0
|
||||||
|
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
|
|
| 17.08.2019, 19:26 [ТС] | |
|
zss, программное прерывание вызывается с помощью исключений?
Добавлено через 1 минуту Вот с stackoverflow - To execute a system call, user process will copy desired system call number to %eax and will execute 'int 0x80'. Что значит will execute int 0x80? Добавлено через 3 минуты zss, или вот с той книги On i386, for example, a user-space application exe‐ cutes a software interrupt instruction, int , with a value of 0x80 . This instruction causes a switch into kernel space, the protected realm of the kernel, where the kernel executes a software interrupt handler—and what is the handler for interrupt 0x80 ? None other than the system call handler! executes a software interrupt instruction, int , with a value of 0x80
0
|
|
|
Модератор
13771 / 10964 / 6491
Регистрация: 18.12.2011
Сообщений: 29,241
|
|
| 17.08.2019, 19:37 | |
|
Я не вдавался в подробности, как это делается на аппаратном уровне,
но, если это не то, то прошу прощения.
0
|
|
|
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
|
|
| 17.08.2019, 20:00 [ТС] | |
|
zss, как оказалось
INT is an assembly language instruction for x86 processors that generates a software interrupt. It takes the interrupt number formatted as a byte value. С С++ это не связанно.
0
|
|
|
Модератор
13771 / 10964 / 6491
Регистрация: 18.12.2011
Сообщений: 29,241
|
|
| 17.08.2019, 20:32 | |
|
Я так и подумал, и, скорее всего, механизм исключений как раз и реализует такое прерывание.
0
|
|
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
|||
| 18.08.2019, 09:02 | |||
Сообщение было отмечено ReYalp как решение
РешениеУ процессора есть таблица обработчиков процессорных событий, они собственно прерываниями и называются. Задумывалась табличка под нужды процессора. Но хитрые разработчики Доисторической Операционной Системы (сокращенно DOS) подумали что и давайте мы в табличку и системные вызовы пристроим. Ну а че, там же 256 позиций, большую часть процессор не использует, чего добру пропадать. Для этого и была придумана команда int. Со времен Доисторической Операционной Системы для int придумали множество альтернатив, начиная с "подключу системную DLL, экспортирую из нее Си-интерфейс и пусть у него о всех этих sysenter башка болит". Однако, некоторые некрофилы, оказывается. продолжали использовать этот их int. Короче, закопайте обратно. Вам это с вероятностью 99% не потребуется.
2
|
|||
|
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
|
||
| 18.08.2019, 11:57 [ТС] | ||
|
Renji,
насколько я понимаю такое решение уже не используется в современных системах? Что-то читал о SYSENTER/SYSEXIT,Вы слышали об этом? Добавлено через 2 минуты точнее насколько я понял Вы слышали об этом,чем оно отличается от int?
0
|
||
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
||
| 18.08.2019, 12:06 | ||
|
0
|
||
|
923 / 639 / 198
Регистрация: 08.09.2013
Сообщений: 1,693
|
||
| 18.08.2019, 14:15 | ||
|
0
|
||
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
||
| 18.08.2019, 14:41 | ||
|
0
|
||
|
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
|
|
| 18.08.2019, 14:47 [ТС] | |
|
Renji, Роберт Лав Системное программирование, там как пример работы в i386 int приведён, а Вы не подскажете как это работало?
Каким образом именно после запуска int 0x80 срабатывало переключение в режим ядра? Никогда не имел дело напрямую с этим, очень интересно.
0
|
|
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
||
| 18.08.2019, 15:06 | ||
|
0
|
||
|
923 / 639 / 198
Регистрация: 08.09.2013
Сообщений: 1,693
|
||
| 18.08.2019, 15:33 | ||
|
причем и на уровне ОС (только что в linux 4.19 64 бит вывел строку в терминал через int 80)
1
|
||
|
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
|
|
| 18.08.2019, 15:41 [ТС] | |
|
gng, меня интересует именно принцип работы,я не совсем понимаю как все происходит после запуска int 0x80 (к примеру),к примеру если взять текст с книги
On i386, for example, a user-space application exe‐ cutes a software interrupt instruction, int , with a value of 0x80 . This instruction causes a switch into kernel space, the protected realm of the kernel, where the kernel executes a software interrupt handler—and what is the handler for interrupt 0x80 ? None other than the system call handler! Запуск инструкции 0x80 влечет за собой переключение в пространство ядра,что это значит и как это происходит? Именно это переключение в пространство ядра,почему в него так легко можно переключится?
0
|
|
|
923 / 639 / 198
Регистрация: 08.09.2013
Сообщений: 1,693
|
|
| 18.08.2019, 15:44 | |
|
0
|
|
|
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
|
|
| 18.08.2019, 15:47 [ТС] | |
|
gng, Тоесть процессор "видит" что была вызвана int и потом вызывает обработчик int? Это если вкратце?
0
|
|
|
923 / 639 / 198
Регистрация: 08.09.2013
Сообщений: 1,693
|
|
| 18.08.2019, 15:51 | |
|
0
|
|
|
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
|
|
| 18.08.2019, 15:54 [ТС] | |
|
gng, мало знаком с ассемблером,в универе не приделил ему должного внимания и все что я знаю о move add это то что одна добавляет данные в регистр,другая убирает(вроде так,не уверен),а понятия даже не имею как они работают на уровне железа
Добавлено через 1 минуту и насколько я помню там не move а mov?
0
|
|
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
||
| 18.08.2019, 15:57 | ||
|
0
|
||
| 18.08.2019, 15:57 | |
|
Помогаю со студенческими работами здесь
20
прерывания Прерывания asm Таблица векторов прерывания Условие прерывания цикла Механизм прерывания ввода Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 31.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|