Загадка для любителей досовского ассемблера

Разговоры на любые темы: вы можете обсудить здесь какой-либо сайт, найти единомышленников или просто пообщаться...
tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Загадка для любителей досовского ассемблера

Сообщение tyomitch » 16.03.2006 (Чт) 19:22

что в досе сделает опкод BOUND?
Изображение

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 16.03.2006 (Чт) 19:30

Неужели не то, что должен?
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 16.03.2006 (Чт) 19:48

Дык, а что должен-то? ;-)


Для большей определённости платформой можно считать чистый свежепоставленный MS-DOS 6.22, запущенный в VMware 4.5; я тестировался именно там.
Изображение

Approximator
Постоялец
Постоялец
 
Сообщения: 572
Зарегистрирован: 26.06.2004 (Сб) 3:10

Сообщение Approximator » 16.03.2006 (Чт) 20:02

tyomitch писал(а):Дык, а что должен-то? ;-)


Для большей определённости платформой можно считать чистый свежепоставленный MS-DOS 6.22, запущенный в VMware 4.5; я тестировался именно там.


Intel Hex Opcodes And Mnemonics, 8086/80186/80286/80386/80486 Instruction Set, BOUND - Array Index Bound Check (80188+)
писал(а):
BOUND - Array Index Bound Check (80188+)
Usage: BOUND src,limit
Modifies flags: None
Array index in source register is checked against upper and lower
bounds in memory source. The first word located at "limit" is
the lower boundary and the word at "limit+2" is the upper array bound.
Interrupt 5 occurs if the source value is less than or higher than
the source.
Clocks Size

Operands 808x 286 386 486 Bytes
reg16,mem32 - nj=13 nj=10 7 2
reg32,mem64 - nj=13 nj=10 7 2
- nj = no jump taken

62 / r BOUND r16,m16&16
62 / r BOUND r32,m32&32
С уважением, Approximator.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 16.03.2006 (Чт) 20:09

дело за малым -- предсказать, основываясь на этой доке, реальный наблюдаемый эффект
Изображение

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 25.03.2006 (Сб) 16:22

ну, и где же все хардкорные ассемблерные гуру? те, у которых пять истинных типов данных? ;-)
Изображение

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 25.03.2006 (Сб) 17:23

Ты не каркай, а то засуммонишь :)
Ответ скажи лучше, потому как в голову ничё не приходит :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 25.03.2006 (Сб) 18:35

Ок, хинт: что делает обработчик этого прерывания? :-)
Изображение

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 25.03.2006 (Сб) 18:50

Шоб я знал - отвечу я так :)
Неужели ребутит? :)

Хотя гугл говорит, что принтскринит.
Но гугл же говорит, что "invoked from ~INT 9~".
Так что не знаю, не знаю :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 25.03.2006 (Сб) 19:37

Следующий хинт: куда обработчик этого прерывания возвращает управление? :-)
Изображение

Approximator
Постоялец
Постоялец
 
Сообщения: 572
Зарегистрирован: 26.06.2004 (Сб) 3:10

Сообщение Approximator » 26.03.2006 (Вс) 2:36

tyomitch писал(а):дело за малым -- предсказать, основываясь на этой доке, реальный наблюдаемый эффект


Реальный наблюдаемый эффект будет таков:

Код: Выделить всё
IF (ArrayIndex < LowerBound OR ArrayIndex > UpperBound)
(* Below lower bound or above upper bound *)
THEN
#BR;
FI;


IA-32 Intel® Architecture
Software Developer’s
Manual
Volume 2:
Instruction Set Reference писал(а):
BOUND—Check Array Index Against Bounds

Opcode/ Instruction/ Description

62 /r; BOUND r16, m16&16; Check if r16 (array index) is within bounds specified by m16&16

62 /r; BOUND r32, m32&32; Check if r32 (array index) is within bounds specified by m32&32

Description

Determines if the first operand (array index) is within the bounds of an array specified the second operand (bounds operand). The array index is a signed integer located in a register. The bounds operand is a memory location that contains a pair of signed doubleword-integers (when the operand-size attribute is 32) or a pair of signed word-integers (when the operand-size attribute is 16). The first doubleword (or word) is the lower bound of the array and the second doubleword (or word) is the upper bound of the array. The array index must be greater than or equal to the lower bound and less than or equal to the upper bound plus the operand size in bytes. If the index is not within bounds, a BOUND range exceeded exception (#BR) is signaled. (When a this exception is generated, the saved return instruction pointer points to the BOUND instruction.)

The bounds limit data structure (two words or doublewords containing the lower and upper limits of the array) is usually placed just before the array itself, making the limits addressable via a constant offset from the beginning of the array. Because the address of the array already will be present in a register, this practice avoids extra bus cycles to obtain the effective address of the array bounds.
Последний раз редактировалось Approximator 26.03.2006 (Вс) 2:44, всего редактировалось 1 раз.
С уважением, Approximator.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 26.03.2006 (Вс) 2:43

#BR -- это не реальный наблюдаемый эффект. Это нечто внутри процессора, что невозможно увидеть.
А что будет возможно увидеть, всё-таки? ;-)
Изображение

Approximator
Постоялец
Постоялец
 
Сообщения: 572
Зарегистрирован: 26.06.2004 (Сб) 3:10

Сообщение Approximator » 26.03.2006 (Вс) 2:59

tyomitch писал(а):#BR -- это не реальный наблюдаемый эффект. Это нечто внутри процессора, что невозможно увидеть.
А что будет возможно увидеть, всё-таки? ;-)


Я тебя совсем не понимаю :? Все инструкции (по моему глубокому разумению), которые выполняются изменяют что-либо в процессоре :).
#BR (BOUND Range Exceeded) - всего лишь один из 19 IA-32 General Exceptions.

Я в том смісле не понимаю, что именно тебе ещё нужно, так как в приведённой мною цитате прямо написано, что именно происходит, когда "случается" :) #BR:
When a this exception is generated, the saved return instruction pointer points to the BOUND instruction.
С уважением, Approximator.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 26.03.2006 (Вс) 5:29

Зацикливает? :scratch:
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 26.03.2006 (Вс) 11:50

Approximator писал(а):
tyomitch писал(а):#BR -- это не реальный наблюдаемый эффект. Это нечто внутри процессора, что невозможно увидеть.
А что будет возможно увидеть, всё-таки? ;-)


Я тебя совсем не понимаю :? Все инструкции (по моему глубокому разумению), которые выполняются изменяют что-либо в процессоре :).
#BR (BOUND Range Exceeded) - всего лишь один из 19 IA-32 General Exceptions.

Просто смысл моей загадки был не "открыть N-томник от Интела и найти там нужный опкод", а "соотнести это с другими имеющимися фактами".

Ещё раз подчёркиваю: речь не о сферическом процессоре в вакууме, а о компьютере целиком. Когда я записываю байт в RAM, это невозможно увидеть, а когда я записываю его в видеобуфер -- возможно. А когда я посылаю его в порт 61h, его возможно ещё и услышать :-)
Изображение

Approximator
Постоялец
Постоялец
 
Сообщения: 572
Зарегистрирован: 26.06.2004 (Сб) 3:10

Сообщение Approximator » 27.03.2006 (Пн) 2:31

tyomitch писал(а):
Approximator писал(а):
tyomitch писал(а):#BR -- это не реальный наблюдаемый эффект. Это нечто внутри процессора, что невозможно увидеть.
А что будет возможно увидеть, всё-таки? ;-)


Я тебя совсем не понимаю :? Все инструкции (по моему глубокому разумению), которые выполняются изменяют что-либо в процессоре :).
#BR (BOUND Range Exceeded) - всего лишь один из 19 IA-32 General Exceptions.

Просто смысл моей загадки был не "открыть N-томник от Интела и найти там нужный опкод", а "соотнести это с другими имеющимися фактами".

Ещё раз подчёркиваю: речь не о сферическом процессоре в вакууме, а о компьютере целиком. Когда я записываю байт в RAM, это невозможно увидеть, а когда я записываю его в видеобуфер -- возможно. А когда я посылаю его в порт 61h, его возможно ещё и услышать :-)


Прости, Тёмыч, у меня консервативное восприятие :). Я хотя и видел в заголовке топика слово "Загадка" не воспринял, что подразумевается загадка в буквальном смысле :).
С уважением, Approximator.

FaKk2
El rebelde gur&#250;
El rebelde gur&#250;
Аватара пользователя
 
Сообщения: 2031
Зарегистрирован: 09.03.2003 (Вс) 22:10
Откуда: Los Angeles

Сообщение FaKk2 » 27.03.2006 (Пн) 3:12

Я как то проехал мимо вас товарищи. О чем загадка и в чем разгадка?
Для получения ответа надо продемонстрировать качества, позволяющие стать компетентным — внимательность, вдумчивость, наблюдательность, желание активно участвовать в выработке решения.

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 27.03.2006 (Пн) 10:12

Наверное в каком то особенном заменители травы. Его не надо курить, а достаточно просто увидеть разок...


Вернуться в Народный треп

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 144

    TopList