169 похожих чатов

Does (E)IP Wrap Around in 16-bit Segments? | OS/2 Museum https://www.os2museum.com/wp/does-eip-wrap-around-in-16-bit-segments/

17 ответов

27 просмотров

тут в примере однобайтовая команда по смещению ffff, а если двухбайтовая?

s54820- Автор вопроса
disba1ancer
тут в примере однобайтовая команда по смещению fff...

Опять же, я думаю, что в 8086 будет врапаться (прочитает байты по 0), как и с данными (про данные там вполне определённо сказано во втором абзаце), а в 286+ должен быть GPF (проверял, но на современном компе).

s54820
Опять же, я думаю, что в 8086 будет врапаться (про...

А я вот думаю, что будет врапаться только через мегабайтную границу

disba1ancer
А я вот думаю, что будет врапаться только через ме...

Ха! Однажды я написал некий софт на своем 386DX40. И применил хак: через 32 разрядную адресацию начал писать в видеопамять прямо из сегмента данных. Но на целевом компьютере был уже 486 процессор, где эту ошибку исправили, и память за мегабайтом заворачивалась а-ля настоящий 8086. Софт не заработал. #былое

Alexander Morozov
Ха! Однажды я написал некий софт на своем 386DX40....

.Model Tiny .Code .386 Org 100h Start: xor ax, ax mov es, ax mov ebx, 000B8000h mov al, '*' mov ah, 8Fh mov cx, 80 * 25 @@C: mov es: [ebx], ax inc ebx inc ebx loop @@C mov ah, 00h int 16h ret End Start тестовый код

Alexander Morozov
Ха! Однажды я написал некий софт на своем 386DX40....

Её не совсем исправили, а скорее добавили костыль в виде A20

Alexander Morozov
.Model Tiny .Code .386 Org 100h Start: xor ...

И где тут заворот на мегабайт? Вообще, это даже на 386 не должно работать, если конечно какой-нибудь расширитель не попортил теневые части сегментных регистров огромным лимитом

disba1ancer
И где тут заворот на мегабайт? Вообще, это даже на...

Тут, как раз, нет заворота. А на целевом 486 компьютере он был.

s54820- Автор вопроса
Alexander Morozov
.Model Tiny .Code .386 Org 100h Start: xor ...

Я вот тоже не вижу, где тут мегабайт, и почему всплыл разговор про A20.

Alexander Morozov
Тут, как раз, нет заворота. А на целевом 486 компь...

Так у тебя тут до мегабайта не доходит, или ты имел ввиду 64к? Но в любом случае тот код должен был вызвать gp

s54820- Автор вопроса
Alexander Morozov
64K здесь обходим.

Тебе @disba1ancer правильно объяснил. Скорее всего, в одном из вариантов запуска был нереальный режим от какого-то другого софта. Когда ты сегментные регистры перезагружаешь, лимит не меняется. Поэтому работало.

Alexander Morozov
64K здесь обходим.

Тот код даже за границу 64к сегмента не заходит, что-то тут не чисто

Alexander Morozov
Он в видеопамять пишет при es=0.

На 486 должно было быть исключение

Похожие вопросы

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Ребят в СИ можно реализовать ООП?
Николай
33
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Карта сайта