Сейчас на форуме: zombi-vadim, zds (+4 невидимых)

 eXeL@B —› Программирование —› Поддержка V86 в 64-битных ОС
. 1 . 2 . >>
Посл.ответ Сообщение

Ранг: 50.0 (постоянный), 31thx
Активность: 0.090.1
Статус: Участник

Создано: 26 ноября 2013 20:19
· Личное сообщение · #1

Тема исключительно умозрительная, нежели практическая.
Насколько реально осуществить поддержку выполнения 16-битных программ (ЭТО НОРТОООН!!!!) реального режима в 64-битной ОС? На первый взгляд нереально совсем, в лонгмоде процессор не поддерживает режим V86. Только что мешает перед началом выполнения V86-кода переключиться в обычный защищенный режим? По-моему ничего. Естественно при этом необходимо загрузить "правильные" 32-битные GDT, IDT, LDT, TSS,MSRы для сисентера и таблицы страниц, иначе возврат из V86 в ринг0 закрашит систему. При возврате в ринг0 из V86 (а это: сисколл - хотя встретить его в коде для реалмода почти невероятно, инт, либо эксепшн), 32-битный хэндлер тут же возвращает управление основному 64-битному ядру (с загрузкой 64-битных GDT и пр.). Таким образом для реализации поддержки V86 в 64 битном ядре нужно "всего лишь" добавить 257 32-битных хэндлеров + код для переключения в 32 и обратно + несколько 32-битных табличек. Ну и конечно поддержка NTVDM, которую выпилили к х..ям из винды64 ))



Ранг: 369.8 (мудрец), 400thx
Активность: 0.390
Статус: Участник

Создано: 26 ноября 2013 22:20
· Личное сообщение · #2

ИМХО для такой задачи лучше использовать эмулятор процессора, это проще и безопаснее чем засорять ядро мусором для поддержки говн мамонта.
Собственно, в Insyde UEFI bios, а также в coreboot, поддержка старых optional rom'ов сделана через x86emu.

-----
PGP key <0x1B6A24550F33E44A>




Ранг: 64.9 (постоянный), 47thx
Активность: 0.120.02
Статус: Участник

Создано: 26 ноября 2013 23:37 · Поправил: hash87szf
· Личное сообщение · #3

Интересно и у красноглазиков робит. Hardware трюк допускает.
http://v86-64.sourceforge.net

Явно с ограничениями того же виртуал 8086...



Ранг: 431.7 (мудрец), 390thx
Активность: 0.730.32
Статус: Участник

Создано: 27 ноября 2013 04:02 · Поправил: dosprog
· Личное сообщение · #4

Тема симпатичная.
Вспоминается давняя проблема с чтением LFN под чистой MS-DOS7.x (вернее, не проблема, а просто отсутствие такой возможности).
Тогда, примерно в 2000 г., нашёлся энтузиаст, который сделал утилиту DOSLFN.
(А к тому времени уже начался массовый переход на NT&NTFS и "проблема решилась сама собой", как оно зачастую и бывает...).
Что-ж, с каждым новым витком прогресса "идти против течения" становится всё тяжелее.
Видимо, всё сведётся к эмуляции. (ффф... эмуляция виртуального 8086...).

И кстати,spinz, уже не умозрительная, а практическая тема - поддержка Full-screen mode для текстового режима консоли в этих новых системах Win7+, вы не в курсе?
Вообще, по моим впечатлениям, в Микрософт просто не хотят поддерживать функционал, который они нарекли ненужным. В данном случае, функционал, "вредящий великолепию GUI".
Имхо, на сегодняшний день самое компромиссное решение - WinXP/32-bit, но кругом полно максималистов и просто людей, которым пофиК. У них всё самое лучшее, без NTVDM,FullScreemMode, и т.д.
У одного знакомого пользователя в наличии 4Гб RAM, парится под Win7/64, спрашиваю, зачем ему это, софт ведь не запускается нужный - отвечает, мол, надо использовать всю что есть память. Да и просто это круче. 4 или 3.7 - что круче? - я смеюсь, да - круче 4.)))

ntldr,
говно мамонта - это гигантское количество программного обеспечения для MS-систем. Правильно, зачем оно надо.))) На свалку.

--ADD--
К следующему посту:
Всё правильно,SYSENTER,SYSEXIT - PentPro, в V86 программах их и не должно быть, как и LGDT.



Ранг: 50.0 (постоянный), 31thx
Активность: 0.090.1
Статус: Участник

Создано: 27 ноября 2013 06:45
· Личное сообщение · #5

hash87szf пишет:
http://v86-64.sourceforge.net

Хм, каждый раз убеждаешься, что все придумано до нас )) Глянул мельком сурсы (авторов ATT-синтаксиса следовало бы насадить на живительный кол) - в принципе реализация того, о чем я писал выше. Правда есть маленький косяк, там не обрабатывается сисентер из V86, хотя команда в V86 вполне валидна и в данном случае скорей всего вызовет краш

| Сообщение посчитали полезным: Dr0p

Ранг: 85.4 (постоянный), 51thx
Активность: 0.090
Статус: Участник

Создано: 27 ноября 2013 08:51
· Личное сообщение · #6

зачем весь этого огород, dosbox не?



Ранг: 369.8 (мудрец), 400thx
Активность: 0.390
Статус: Участник

Создано: 27 ноября 2013 10:41
· Личное сообщение · #7

spinz пишет:
авторов ATT-синтаксиса следовало бы насадить на живительный кол

+1

-----
PGP key <0x1B6A24550F33E44A>


| Сообщение посчитали полезным: Dr0p, Zorn


Ранг: 1131.7 (!!!!), 447thx
Активность: 0.670.2
Статус: Участник

Создано: 27 ноября 2013 15:29
· Личное сообщение · #8

spinz пишет:
авторов ATT-синтаксиса следовало бы насадить на живительный кол


когда-то это было нужно, не?




Ранг: 72.3 (постоянный), 133thx
Активность: 0.380
Статус: Участник

Создано: 27 ноября 2013 15:48 · Поправил: Dr0p
· Личное сообщение · #9

Да красноглазые совсем извращенцы, шифт не юзают, венгерскую нотацию тоже наверно. И директива _asm не православненько(скрипт чтоле бы запилили, если у них норм конпиля нет)




Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 27 ноября 2013 15:54
· Личное сообщение · #10

т.е. что ты так высказываться ты должен быть как миниму спец по линуху и gcc
так ли это?




Ранг: 72.3 (постоянный), 133thx
Активность: 0.380
Статус: Участник

Создано: 27 ноября 2013 17:34
· Личное сообщение · #11

reversecode

Что бы оценить корявость исходного кода, не нужно даже понимать что он делает. Нормальный код красив и понятен. Их так называют за вырвиглазный синтаксис.




Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 27 ноября 2013 17:41
· Личное сообщение · #12

код это бинарный стрим)) а нотация это только текст,
тренируйся на разной литераторе
тру специалисты читают любую литературу В_лЮб__О_О__Ой__нОт_аЦ__иИ




Ранг: 72.3 (постоянный), 133thx
Активность: 0.380
Статус: Участник

Создано: 27 ноября 2013 17:45
· Личное сообщение · #13

reversecode

Текст может быть совсем не читабельным. Посему все согласны что AT&T синтаксис это вообще ппц какойто.



Ранг: 50.0 (постоянный), 31thx
Активность: 0.090.1
Статус: Участник

Создано: 27 ноября 2013 17:49
· Личное сообщение · #14

Gideon Vi пишет:
когда-то это было нужно, не?

Когда-то в 60-х, когда все молились на переносимость и совместимость (да и сейчас молятся, как будто софт пишется для удобства тех, кто будет его портировать) - возможно. Вот за это и нужно сажать на кол (а лучше титановый лом с шипами) и авторов синтаксиса, и их без(д)умных последователей. Какого хера синтаксис, который, возможно, был удобен полвека назад на каких-то давно забытых платформах, сделали для никсов стандартом на все времена и платформы?




Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 27 ноября 2013 17:51
· Личное сообщение · #15

он ппц только для тех что изначально другой учил,
а вот те кто учили изначально AT&T считают ппц синтаксисом Intel

с таким успехом можеш заявлять что какой нибудь ARM/PPC/MK68 уродский асм, и это только потому что ты их не знаешь

в этом легко видится то что люди очень не охотно учат что то новое или как тяжело переучиваются,
но вообщем то их никто и не заставляет, им просто хочется поворчать))




Ранг: 72.3 (постоянный), 133thx
Активность: 0.380
Статус: Участник

Создано: 27 ноября 2013 17:56
· Личное сообщение · #16

reversecode

Для чего там символы левые в каждой команде ?

Это что, труъ по вашему мусора напихать между строк ?

Я бы например никада на этом говнище не взялся кодить.

А у интел синтаксис логичный и минимальный. Нет там мусора.




Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 27 ноября 2013 18:02
· Личное сообщение · #17

да да, ты еще С++ вспомни! )) где присваивание делается одной командой a=b
кто придумал вообще асм? какой еще mov eax,ebx?
зачем столько избыточности? другое дело назвали бы регистры с циферками,
mov a32,b32 и сразу понятно сколько разрядные регистры
и вообще что за команда mov? зачем столько лишних букв? ппц вообще какой то))))))
ну вообщем нет смысла перемывать все по косточкам, ты с трудом осваиваешь что то новое, потому что сразу проецируешь с свой мир, увы изначально это не верно, твой мир только локально у тебя
вселенная большееее и одним тобой не ограничевается



Ранг: 488.1 (мудрец), 272thx
Активность: 0.350
Статус: Участник

Создано: 27 ноября 2013 18:02 · Поправил: VodoleY
· Личное сообщение · #18

Dr0p ты под риски не кодил видимо.
З.Ы. я тоже особо не кодил, но код читал. заглядение..

-----
Наша работа во тьме, Мы делаем, что умеем. Мы отдаем, что имеем, Наша работа во тьме....





Ранг: 1131.7 (!!!!), 447thx
Активность: 0.670.2
Статус: Участник

Создано: 27 ноября 2013 19:31 · Поправил: Gideon Vi
· Личное сообщение · #19

spinz, у тебя происходит типичная подмена понятий. Усаживай на кол тех, кто навязывает устаревшие технологии, а не разработчиков стандарта, который был крайне актуален в свое время.

Dr0p пишет:
Я бы например никада на этом говнище не взялся кодить.


ну, вероятно ты родился после появления этих ваших интелов.



Ранг: 50.0 (постоянный), 31thx
Активность: 0.090.1
Статус: Участник

Создано: 27 ноября 2013 20:18
· Личное сообщение · #20

Gideon Vi пишет:
Усаживай на кол тех, кто навязывает устаревшие технологии, а не разработчиков стандарта

Во как! А не ты ли подменяешь понятия, проводя грань между разработчиками стандарта и теми, кто навязывает? Разработчики стандарта никуда не ушли из индустрии на следующий день, а как минимум еще пару десятков лет активно работали в самых разных проектах и немало способствовали продвижению "устаревших технологий"



Ранг: 431.7 (мудрец), 390thx
Активность: 0.730.32
Статус: Участник

Создано: 27 ноября 2013 20:26 · Поправил: dosprog
· Личное сообщение · #21

Наибольшее неудобство вызывает последовательность аргументов, и я когда-то тоже сильно ругал (про себя) ATT-синтаксис. Но потом попытался найти аналогию, и стало понятно, "откуда ноги растут".
Как выглядит OS-команда "COPY","CP"(и "MOVE"!)? - C>copy [источник] [приёмник]. Так почему в ассемблере должно быть как-то иначе для инструкции <MOV>? Тем не менее, в нотации Intel оно иначе.
Делали, как удобнее и понятнее было на тот момент, когда пользовались командной строкой.
Ну, а в Линуксовом асме воспроизведена эта нотация, чтобы поменьше изменять проверенный код транслятора.
После недели возни с ATT-синтаксисом он уже не кажется таким уж неудобным, только потом приходится "переключаться" обратно. При этом возможна (и бывала) куча ошибок...




Ранг: 72.3 (постоянный), 133thx
Активность: 0.380
Статус: Участник

Создано: 28 ноября 2013 01:59 · Поправил: Модератор
· Личное сообщение · #22

reversecode

> зачем столько избыточности? другое дело назвали бы регистры с циферками,

Это не избыточность, а сделано для удобства. Если юзать чисто цифры, то код трудночитаем будет. На z80 была система команд, где регистры пронумерованы и раскодируются в виде смещения, тоесть b, c, d etc и я помнил все три таблицы опкодов наизусть, потому что по порядку шла нумерация. И юзалась не мув, а лоад - ld c,d. Совдеповский аналог использовал ..., не логичные мнемоники, хотя кодировка инструкций была одинаковой.

> ты с трудом осваиваешь что то новое

Что именно здесь нового и что осваивать ?

Актуальные вещи актуальны, потому что логичны. А треугольная кривейшая система даже не стоит не то что бы это осваивать, но даже внимания. И ты не ответил на вопрос, а ушёл от ответа. Потому что сам понимаешь его.

Ты кстате на старика похож. Какое то совсем тугое восприятие




Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 28 ноября 2013 02:44 · Поправил: reversecode
· Личное сообщение · #23

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




Ранг: 72.3 (постоянный), 133thx
Активность: 0.380
Статус: Участник

Создано: 28 ноября 2013 03:02
· Личное сообщение · #24

reversecode

Вот скажи, мне интересно стало. Ты в коде имена переменным, функциям даёшь ?

А зачем, можно же как в деконпиле - sub1, v10..

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




Ранг: 72.3 (постоянный), 133thx
Активность: 0.380
Статус: Участник

Создано: 28 ноября 2013 03:08
· Личное сообщение · #25

dosprog

> Как выглядит OS-команда "COPY","CP"(и "MOVE"!)? - C>copy [источник] [приёмник].

Наоборот, Dst, Src. Но не суть важно. Инструкция мув не просто копирует данные. Есть множество валидаций, трансляций етц.

> После недели возни с ATT-синтаксисом

Судя по синтаксису, он пригоден только для кортких инлайн вставок из пары инструкций. Для этого походу и нужны префиксы. Что то на нём сложное не пилят на сколько понимаю.



Ранг: 64.9 (постоянный), 47thx
Активность: 0.120.02
Статус: Участник

Создано: 28 ноября 2013 04:20 · Поправил: hash87szf
· Личное сообщение · #26

прекратить ныть

"This is the AT&T syntax, so named because it was created by AT&T as a portable assembly notation
tomake Unix easier to port from one underlying CPU to another. It’s ugly
in part because it was designed to be generic, and it can be recast for any
reasonable CPU architecture that might appear."

атт синтакс - велосипед с шлюпкой и винтом.




Ранг: 72.3 (постоянный), 133thx
Активность: 0.380
Статус: Участник

Создано: 28 ноября 2013 10:51 · Поправил: Dr0p
· Личное сообщение · #27

hash87szf

Code:
  1.          popl %ebx              #get the address of the string
  2.          xor  %eax, %eax
  3.          mov  %al, 0x07(%ebx)   #put a NULL where the N is in the string
  4.          movl %ebx, 0x08(%ebx)  #put the address of the string
  5.                                 #to where the AAAA is
  6.          movl %ebx, 0x0c(%ebx)  #put 4 null bytes into where the BBBB is
  7.          mov $11, %al           #execve is syscall 11
  8.          lea 0x08(%ebx), %ecx   #load the address of where the AAAA was
  9.          lea 0x0c(%ebx), %edx   #load the address of the NULLS
  10.          int $0x80              #call the kernel


Накой нужен этот шлак - % ?

lea 0x08(%ebx), %ecx - и что это за инструкция, где тут адрес. Очевидно по регистрам и инту что это x86 архитектура. Но всё искаверкано, не потому что я привык к другой, а потому что например 0x08 вообще не имеет отношения к приёмнику: 8D LEA Gv, M; G - the reg field of the ModR/M byte selects a general register. M - the ModR/M byte may refer only to memory. Ну а адрес формируется из сегмента и смещения Seg:[offset]. Такова архитектура. А код выше вообще какой то мусор. И какая может быть есчо портабельность, если это ассемблер

Ненадо оправданий. Этот синтаксис велосипед с квадратными колёсами.

| Сообщение посчитали полезным: int_256

Ранг: 64.9 (постоянный), 47thx
Активность: 0.120.02
Статус: Участник

Создано: 28 ноября 2013 16:22
· Личное сообщение · #28

Инди, вас конечно учить трудно (душевно больные не лечатся), но взгляните на инстракшн формат многих РИСКов (load/store architecture), поймётё почему парзить %, $ удобно.
Ассемблер писать, это ведь вам не гавно лепить как все ваши (с)"двиги". )))
Будьте здоровы!




Ранг: 72.3 (постоянный), 133thx
Активность: 0.380
Статус: Участник

Создано: 28 ноября 2013 16:32
· Личное сообщение · #29

hash87szf

> душевно больные не лечатся

Не могу сказать что мне вас жаль. Транками оно иногда лечится.

> но взгляните на инстракшн формат РИСКов

Зачем, вон выше кусок кода. Там пробелы заменены на %. Ну а зачем искаверкали красноглазые синтаксис понятно, у них же бугурт на всех и всё. Надо сделать что бы небыло похоже ни на что, пусть и черезжопными способами. Видимо нужен специальный редактор для такого кода



Ранг: 53.9 (постоянный), 19thx
Активность: 0.040
Статус: Участник

Создано: 29 ноября 2013 05:38
· Личное сообщение · #30

reversecode пишет:
другое дело назвали бы регистры с циферками

В упомянутом тобой выше АРМе например так и есть, но это не взрывает мозг как этот ущербный синтаксис...


. 1 . 2 . >>
 eXeL@B —› Программирование —› Поддержка V86 в 64-битных ОС
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати