ФлеймФорумПрограммирование

[старое железо]Поясните про сегменты и прерывания (2 стр)

Страницы: 1 2 3 4 Следующая »
#15
21:48, 8 мая 2014

laMer007
> Ну у него видимо была своя личная вм со своей системой команд, поэтому знать
> чужую архитектуру он не обязан. Ну и давайте будем благосклонны к тем кто
> никогда не сдаётся, следуя за своей мечтой.
Вот это. У меня все ВМ были очень простые, все однозадачные. Сейчас я с парой человек пишу чуть более сложную, с сегментами, правами доступа и другими плюхами. Как то так.

#16
21:53, 8 мая 2014

sb3d
> Интересно, а зачем это всё в 2014?
Велосипед. Хочется почуствовать себя каким нибудь Линусом, который пилит свое ядро для ос :) Ну и ВМ - просто по тому, что приятнее голого железа и проще портировать.

#17
22:18, 8 мая 2014

Bizunow
Сегменты - тупиковая ветка, делай сразу 32 битную машину, от сегментов толку никакого.

#18
15:29, 9 мая 2014

Финогенов К.Г. Самоучитель по системным функциям MS-DOS
http://rutracker.org/forum/viewtopic.php?t=3423898
Я когда-то по этой книжке учился :)

#19
15:42, 9 мая 2014

все очень просто:
адрес - 0xNNNNN = <сегмент> * 16 + <смещение> (адрес не больше метра)
сегмент 0xNNNN = <адрес> >> 4, при этом  смещение = <адрес> & 0xF
или
смещение 0xNNNN = <адрес> & 0xFFFF, и соответственно сегмент 0xNNNN = (<адрес> & 0xF0000) >> 4

если сегмент = 0xFFFF то со смещением больше 0xF можно попасть в HIMEM.

код программы обычно укладывается в 64 килобайта поэтому достаточно выровнять сегмент по 0xNNNN0 и в стеке можно хранить только смещение - это для .COM, хотя переход в пределах сегмента и возврат и для .EXE тоже. Или сохраняется два 16 битных числа - сегмент и смещение, как не странно с абсолютно лишней информацией.

В программном случае прерывания, это аналог дальнего перехода - в стек пишется 32 бита.

Вот тебе обработчик клавиатурного прерывания

+ Показать
#20
16:04, 9 мая 2014

сегменты это такая параша что просто ваще

#21
16:22, 9 мая 2014

TarasB
Чуваааааак... ты адресацию для остальных режимов вообще видел?

#22
16:31, 9 мая 2014

TarasB
Запусти 32 бита на 8086 с 256Кб памяти :)

#23
16:34, 9 мая 2014

Dusk
там инструкций таких нет Ж)

#24
16:36, 9 мая 2014

foxes
> Чуваааааак... ты адресацию для остальных режимов вообще видел?
Да. Вот сейчас я могу всё адресовать одним числом int32.
Не, я знаю, что сегменты и тут есть на самом деле, но это уже скрыто нафиг от меня.

#25
16:40, 9 мая 2014

laMer007
> Ведь можно просто помочь, без попытки возвыситься в своих глазах.
для TB это не возможно, ведь он должен расти и развиваться - все выше и выше и вышеее. Это же целеустремленный человек знающей себе цену и всегда делающий правильные выводы.

TarasB
> но это уже скрыто нафиг от меня.
теперь представь что темы, в которых обсуждается, то что от тебя скрыто и то что тебе совсем не нужно, тоже скрыты от тебя и читать их, и тем более писать в них что то, нет ни какой необходимости.

#26
16:54, 9 мая 2014

TarasB
>Не, я знаю, что сегменты и тут есть на самом деле
А я откуда знаю зачем ему 16 бит надо.

#27
18:26, 9 мая 2014

foxes
ты чё, чувак?

#28
20:40, 9 мая 2014

TarasB
> ты чё, чувак?
я ни че, а ты че?

#29
21:31, 9 мая 2014

foxes
> Чуваааааак... ты адресацию для остальных режимов вообще видел?

Что не так с адресацией в "нереальном" режиме (ну кроме того, что функции BIOS и DOS не работают) ?

Страницы: 1 2 3 4 Следующая »
ФлеймФорумПрограммирование

Тема в архиве.