Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.140.190.147] |
|
Страницы: (2) [1] 2 все ( Перейти к последнему сообщению ) |
Сообщ.
#1
,
|
|
|
Прочитал статейку про команду loadall, там пишут, что её код 0F05. Но все дизАсмы кажут, что это syscall, а есть ещё loadall286=0F04.
Не подскажите историю этой каши ? Это loadall переименовали, или перенесли, или убрали и поставили 2 новых команды? |
Сообщ.
#2
,
|
|
|
Славян hiew 6.0 пишет loadall286=0F05...
|
Сообщ.
#3
,
|
|
|
Ну и?
NDN(NecroDosNaviga) и BDS(BorlDevStudi) пишут loadall286=0F04, syscall=0F05. Где истина то? |
Сообщ.
#4
,
|
|
|
Славян 0F04 - неизвесная операция... в hiew'e и Turbo Debuger'e...
|
Сообщ.
#5
,
|
|
|
Э-э-... простите, вы про Turbo Debugger от Borland C++ 3.1 1992 года? Забыть про него. А hiew я никогда не пользовался, поэтому это не авторитет.
Так как дела с современной точки зрения? |
Сообщ.
#6
,
|
|
|
Славян и вы простите... если FASM вам не указ...больше ничем не смогу помочь...
В FASM'e loadall286 0F05 syscall 0F05 Предполагаю шо loadall286 и syscall одно и тоже... FASM рулит |
Сообщ.
#7
,
|
|
|
hot_ice, это не одно и то же loadall286 это быстрый переход в защищенный режим. Но эта команда действительна только на 286-й тачке, на современных этот опкод означает syscall. И ничего удивительного, просто loadall была недокументированной командой, поэтому уже с появлением 386-х процессоров эта команда сменила опкод, точно уже не помню каким он стал.
|
Сообщ.
#8
,
|
|
|
AndNot я имел в виду шо опкод один и тот же...
и функционал...скорее всего зависит в каком режиме находится CPU... 16 битный или 32 pmode... ведь с 386 процы поддерживают 16 битный pmode? Для совместимости должны были оставить... не врет же hiew 6.0... на сколько помню он до пеньков опкоды держит... мне проверить нечем |
Сообщ.
#9
,
|
|
|
hot_ice, опкод то один, а вот команды совершенно разные, в не зависимости от режима процессора. Просто команда loadall, с опкодом 0f05, была только на двойках, а на следующих процессорах эта команда сменила опкод(если интересно, то могу поискать новый опкод этой команды), а 0f05 получился свободным, вот его и заюзали для syscall.
И именно поэтому различные дизассемблеры показывают различные команды, они же не могут знать, под какой процессор писалась прога |
Сообщ.
#10
,
|
|
|
Ага, нашел.
Цитата Отсюда хорошо видно, что представляет из себя LOADALL. Насколько помню, ее использовал драйвер HIMEM.SYS, для быстрого доступа к памяти за 1-м мегобайтом из реального режима, без переключения в защищенный режим. Сейчас эта команда потеряла свою актуальность, и вроде уже не поддерживается, начиная с 486-х процессоров. Кстати, на 286-х была еще одна недокументированная инструкция, имеющая опкод 0f04h, очень похожая на loadall, с небольшим отличием.OPCODE LOADALL - Load All Registers CPU: Intel 386+ +all clones Type of Instruction: System (Work only then CPL=0) Instruction: LOADALL Description: Load All Registers (Include Shadow Registers) from Table Which Begin on place pointed ES:EDI Format of LOADALL Table: Offset Len Description 0H 4 CR0 4H 4 EFLAGS 8H 4 EIP CH 4 EDI 10H 4 ESI 14H 4 EBP 18H 4 ESP 1CH 4 EBX 20H 4 EDX 24H 4 ESX 28H 4 EAX 2CH 4 DR6 30H 4 DR7 34H 4 TR (16 bit, zero filled up) 38H 4 LDT --------- 3CH 4 GS --------- 40H 4 FS --------- 44H 4 DS --------- 48H 4 SS --------- 4CH 4 CS --------- 50H 4 ES --------- 54H 4 TSS.attrib 58H 4 TSS.base 5CH 4 TSS.limit 60H 4 0s 64H 4 IDT.base 68H 4 IDT.limit 6CH 4 0s 70H 4 GDT.base 74H 4 GDT.limit 78H 4 LDT.attrib 7CH 4 LDT.base 80H 4 LDT.limit 84H 4 GS.attrib 88H 4 GS.base 8CH 4 GS.limit 90H 4 FS.attrib 94H 4 FS.base 98H 4 FS.limit 9CH 4 DS.attrib A0H 4 DS.base A4H 4 DS.limit A8H 4 SS.attrib ACH 4 SS.base B0H 4 SS.limit B4H 4 CS.attrib B8H 4 CS.base BCH 4 CS.limit C0H 4 ES.attrib C4H 4 ES.base C8H 4 ES.limit CCH 4 Length of table D0H 30h Unused,not loaded 100H 4 Temporary Register IST 104H 4 Temporary Register I 108H 4 Temporary Register H 10CH 4 Temporary Register G 110H 4 Temporary Register F 114H 4 Temporary Register E 118H 4 Temporary Register D 11CH 4 Temporary Register C 120H 4 Temporary Register B 124H 4 Temporary Register A Format of Attrib field: Byte Description 0 0s 1 AR (Access Right) byte in the Descriptor format Note: P bit is a valid bit if valid bit=0 then Shadow Register is invalid and INT 0DH - General Protection Fault call DPL of SS,CS det. CPL 2-3 0s Flags Affected: All (FLAGS Register Reload) CPU mode: RM,PM0 Physical Form: LOADALL COP (Code of Operation): 0FH 07H Clocks: i386XX : n/a i486XX : n/a Note: This operation used 102 data transfer cycles on 32bit bus Typical clocks: i386SX: ~350 i386DX: ~290 i486XX: ~220 --------------------------------------------------- OPCODE LOADALL - Load All Registers From Table CPU: Intel 80286 and all its clones Type of Instruction: System (Work only then CPL=0) Instruction: LOADALL Description: Load All Registers (Include Shadow Registers) from Table Which Begin on 000800H Address, Len of this table is 66H Format of LOADALL Table: Address Len Description 800H 6 None 806H 2 MSW 808H 14 None 816H 2 TR 818H 2 FLAGS 81AH 2 IP 81CH 2 LDTR 81EH 2 DS 820H 2 SS 822H 2 CS 824H 2 ES 826H 2 DI 828H 2 SI 82AH 2 BP 82CH 2 SP 82EH 2 BX 830H 2 DX 832H 2 CX 834H 2 AX 836H 6 ES Shadow Descriptor 83CH 6 CS Shadow Descriptor 842H 6 SS Shadow Descriptor 848H 6 DS Shadow Descriptor 84EH 6 GDTR 854H 6 LDT Shadow Descriptor 85AH 6 IDTR 860H 6 TSS Shadow Descriptor Format of Shadow Descriptor: Byte Description 0-2 24bit Phisical Address 3 AR (Access Right) byte 4-5 16bit Segment Limit Format of GDTR and IDTR: Byte Description 0-2 24bit Phisical Address 3 0s 4-5 16bit Segment Limit Note: Using this instruction we may turn on "Big Real Mode" i.e. mode then PG=1,PE=0,cpl=0. This mode very usefull,But Pentium never support this instruction. Flags Affected: All (FLAGS Register Reload) CPU mode: RM,PM0 Physical Form: LOADALL COP (Code of Operation): 0FH 05H Clocks: 80286 : 195 Вообще раньше интереснее было, стабильно появлялись "чудные" процессоры и сопроцессоры Например помню один забавный сопроцессор, названия уже подзабыл, так у него была особенность - очень быстрая работа с матрицами. Реализация была простой (только не надо падать ) - FPU имел три банка, каждый из которых вмещал по восемь вещественных чисел. Перед перемножением векторов, в 1-й и 2-й банк загружалась матрица, в 0-й вектор, а дальше использовалась специальная команда, как сейчас помню - FMUL4x4, по которой выполнялось перемножение этого вектора на матрицу, причем не просто перемножения, а по всем правилам, со сложением Не помню сколько это времени занимало, но значительно быстрее, нежели на других сопроцессорах. SSE отдыхает Я уж молчу про процессоры NEC, имевшие довольно много интересных и очень полезных команд, некоторые из которых появились и у Интела, в частности команды для работы с битами Но по прежнему не хватает команд, позволявших работать с частью бит регистров и команд для работы с BCD числами. |
Сообщ.
#11
,
|
|
|
AndNot против лома нет приема...
сжалься...запости архивчик ентого дока... |
Сообщ.
#12
,
|
|
|
Мне тоже пошли на мыло kardinal62@bk.ru
я правда немного не согласен...в частности по поводу одной строки... |
Сообщ.
#13
,
|
|
|
Ребята, я уже не помню откуда этот файл, но он очень интересный
Прикреплённый файлOPCODES.rar (83.43 Кбайт, скачиваний: 107) |
Сообщ.
#14
,
|
|
|
AndNot - не будет ли мосье так добр?
Поведуйте (для тех кто ф танке) как NEC V30 рубал опкоды 8080 |
Сообщ.
#15
,
|
|
|
Это ты про что?
|