На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Перед отправкой сообщения внимательно прочтите правила раздела!!!
1. Запрещается обсуждать написание вирусов, троянов и других вредоносных программ!
2. Помните, что у нас есть FAQ раздела Assembler и Полезные ссылки. Посмотрите, возможно, там уже имеется решение вашего вопроса.

3. Настоятельно рекомендуем обратить особое внимание на правила форума, которые нарушаются чаще всего:
  3.1. Заголовок темы должен кратко отражать её суть. Темы с заголовками типа "Срочно помогите!" или "Ассемблер" будут отправляться в Корзину для мусора.
  3.2. Исходники программ обязательно выделяйте тегами [code]...[/code] (одиночные инструкции можно не выделять).
  3.3. Нежелательно поднимать старые темы (не обновлявшиеся более года) без веской на то причины.

Не забывайте также про главные Правила форума!

Добро пожаловать и приятного вам общения!!! ;)
 
Модераторы: Jin X, Qraizer
Страницы: (2) [1] 2  все  ( Перейти к последнему сообщению )  
> loadall или syscall , Что правильно на 0F 05 ?
    Прочитал статейку про команду loadall, там пишут, что её код 0F05. Но все дизАсмы кажут, что это syscall, а есть ещё loadall286=0F04.
    Не подскажите историю этой каши ? Это loadall переименовали, или перенесли, или убрали и поставили 2 новых команды? :(
    Сообщение отредактировано: Славян -
      Славян hiew 6.0 пишет loadall286=0F05...
        Ну и?
        NDN(NecroDosNaviga) и BDS(BorlDevStudi) пишут loadall286=0F04, syscall=0F05. Где истина то?
        Сообщение отредактировано: Славян -
          Славян 0F04 - неизвесная операция... в hiew'e и Turbo Debuger'e...
            Э-э-... простите, вы про Turbo Debugger от Borland C++ 3.1 1992 года? Забыть про него. А hiew я никогда не пользовался, поэтому это не авторитет.
            Так как дела с современной точки зрения?
              Славян и вы простите... если FASM вам не указ...больше ничем не смогу помочь...

              В FASM'e
              loadall286 0F05
              syscall 0F05

              Предполагаю шо loadall286 и syscall одно и тоже... FASM рулит
                hot_ice, это не одно и то же :no: loadall286 это быстрый переход в защищенный режим. Но эта команда действительна только на 286-й тачке, на современных этот опкод означает syscall. И ничего удивительного, просто loadall была недокументированной командой, поэтому уже с появлением 386-х процессоров эта команда сменила опкод, точно уже не помню каким он стал.
                  AndNot я имел в виду шо опкод один и тот же...
                  и функционал...скорее всего зависит в каком режиме находится CPU... 16 битный или 32 pmode...
                  ведь с 386 процы поддерживают 16 битный pmode? Для совместимости должны были оставить...
                  не врет же hiew 6.0... на сколько помню он до пеньков опкоды держит...
                  мне проверить нечем :(
                  Сообщение отредактировано: hot_ice -
                    hot_ice, опкод то один, а вот команды совершенно разные, в не зависимости от режима процессора. Просто команда loadall, с опкодом 0f05, была только на двойках, а на следующих процессорах эта команда сменила опкод(если интересно, то могу поискать новый опкод этой команды), а 0f05 получился свободным, вот его и заюзали для syscall.
                    И именно поэтому различные дизассемблеры показывают различные команды, они же не могут знать, под какой процессор писалась прога :)
                      Ага, нашел.
                      Цитата
                      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
                      Отсюда хорошо видно, что представляет из себя LOADALL. Насколько помню, ее использовал драйвер HIMEM.SYS, для быстрого доступа к памяти за 1-м мегобайтом из реального режима, без переключения в защищенный режим. Сейчас эта команда потеряла свою актуальность, и вроде уже не поддерживается, начиная с 486-х процессоров. Кстати, на 286-х была еще одна недокументированная инструкция, имеющая опкод 0f04h, очень похожая на loadall, с небольшим отличием.
                      Вообще раньше интереснее было, стабильно появлялись "чудные" процессоры и сопроцессоры :) Например помню один забавный сопроцессор, названия уже подзабыл, так у него была особенность - очень быстрая работа с матрицами. Реализация была простой (только не надо падать :) ) - FPU имел три банка, каждый из которых вмещал по восемь вещественных чисел. Перед перемножением векторов, в 1-й и 2-й банк загружалась матрица, в 0-й вектор, а дальше использовалась специальная команда, как сейчас помню - FMUL4x4, по которой выполнялось перемножение этого вектора на матрицу, причем не просто перемножения, а по всем правилам, со сложением :) Не помню сколько это времени занимало, но значительно быстрее, нежели на других сопроцессорах. SSE отдыхает :)
                      Я уж молчу про процессоры NEC, имевшие довольно много интересных и очень полезных команд, некоторые из которых появились и у Интела, в частности команды для работы с битами :) Но по прежнему не хватает команд, позволявших работать с частью бит регистров и команд для работы с BCD числами.
                        AndNot против лома нет приема...
                        сжалься...запости архивчик ентого дока...
                          Мне тоже пошли :yes: на мыло kardinal62@bk.ru
                          я правда немного не согласен...в частности по поводу одной строки... :wall:
                          Сообщение отредактировано: Кардинал-хан -
                            Ребята, я уже не помню откуда этот файл, но он очень интересный :)
                            Прикреплённый файлПрикреплённый файлOPCODES.rar (83.43 Кбайт, скачиваний: 107)
                              AndNot - не будет ли мосье так добр?

                              Поведуйте (для тех кто ф танке) как NEC V30 рубал опкоды 8080 :)
                                Это ты про что?
                                1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                                0 пользователей:


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0571 ]   [ 14 queries used ]   [ Generated: 17.05.24, 14:35 GMT ]