|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
03.08.2008, 00:45 | #1 |
Android Developer
Старожил Подтвердите свой е-майл
Регистрация: 19.02.2007
Сообщений: 3,708
|
Прерывания и asm в Си
Компилю в MinGW - gcc... линковщик там же ld.
Дело в том что надо мне сделать аналог int86 ( найти оригинал пока не удалось ). Наброски есть, но с асмом я пока не на ты, так что не ругаться : Код:
|
03.08.2008, 01:11 | #2 |
Новичок
Джуниор
Регистрация: 18.01.2008
Сообщений: 1,720
|
Код:
|
03.08.2008, 11:41 | #3 |
Android Developer
Старожил Подтвердите свой е-майл
Регистрация: 19.02.2007
Сообщений: 3,708
|
Все разобрался... начал исследовать ) просто в защищенном режиме проца меня выкидывало )) сделал так
Код:
Код:
|
03.08.2008, 14:53 | #4 |
Android Developer
Старожил Подтвердите свой е-майл
Регистрация: 19.02.2007
Сообщений: 3,708
|
Гы ) Странно... даже смешно как то ) пока делал другую часть, эта просто напросто перестала работать. Может кто знает как в теории хотябы может выглядить код функции из dos.h ->> int86 ? вызов прерываний...
Походу не верно я разобрался ( В реальном режиме все чики пуки, а вот в защищенном не так все легко, я так понимаю в теории int86 делает переход в реальный режим процессора кладек в стек все регистры потом заносит новые которые передаются через REGS потом вызывает прерывание потом все регистры переносит в выходящий REGS и потом уже вытаскивает из стека все и обратно в защищенный режим ! Думаю все именно так... проблема для меня пока, именно переходы из защишенного в реальный и обратно... p.s. Надеюсь ну кто нибудь подскажет, все таки форум я думаю "престижный" Ах да, для большей ясности ) пишу свою ОС. Многое познал в ходе... соответственно щас в ядре в защищенном режиме на Си. вот такие вот пироги... может открыть тему или ветку вообще )) у меня уже и ссылок хороших много и доков... может кому будет тоже интересно, чисто для увеличение кол-во серого вещества. Последний раз редактировалось BOBAH13; 03.08.2008 в 16:36. |
03.08.2008, 18:33 | #5 |
Android Developer
Старожил Подтвердите свой е-майл
Регистрация: 19.02.2007
Сообщений: 3,708
|
Кто знает, есть ли возможность указать си компилятору что щас идет 16 битный код ? ну типа директив для асмов use16; [BITS 16]... или только асм ? ну народ... что вообще никого ?
|
04.08.2008, 18:41 | #6 |
Android Developer
Старожил Подтвердите свой е-майл
Регистрация: 19.02.2007
Сообщений: 3,708
|
Вообщем ясно Ни от кого не ждать помоши. Ну хотя бы в теории кто хоть немного знает подскажите реализацию int86 функции в си описанной в dos.h.
p.s. монолог выходит, скоро забанят меня как флудера |
05.08.2008, 15:33 | #7 |
Новичок
Джуниор
Регистрация: 18.01.2008
Сообщений: 1,720
|
BOBAH13, функция int86 вызывает функцию int86x, которая формирует в локальных переменных код вызова прерывания и вызывает его. Чтобы указать компилятору, что идёт 16-битный код нужно или брать 16-разрядный компилятор, или смотреть ключи у конкретного, вполне вероятно, что их там и не будет. Я не зря выше советовал BC++ 3.1. Переход в PM за 20 с лишним лет описан так подробно, что даже не знаю, стоит ли здесь на нём останавливаться. Главное здесь то, что он требует определённой подготовительной работы, в частности формирования IDT и GDT - обращение к памяти и прерываниям в PM происходит по дескрипторам, а не по явным адресам, остальное - забота процессора. Сам вызов прерываний при этом выглядит так же, как и в реальном режиме.
P.S. Всё-таки, не валите все вопросы в кучу. |
05.08.2008, 15:52 | #8 |
Android Developer
Старожил Подтвердите свой е-майл
Регистрация: 19.02.2007
Сообщений: 3,708
|
да B_N знаю все что вы сказили ) Уже и читал и вникал, видимо мозгов не хватка. Ну как вернусь с моря думаю добью эту тему Спасибо хоть вам за ответы.
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
прерывания | sergei64_89 | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 3 | 22.04.2008 13:37 |
Операторы прерывания | Иринкаа | Общие вопросы Delphi | 13 | 27.11.2007 21:52 |