Главная » Просмотр файлов » Volume 2A Instruction Set Reference A-M

Volume 2A Instruction Set Reference A-M (794101), страница 89

Файл №794101 Volume 2A Instruction Set Reference A-M (Intel and AMD manuals) 89 страницаVolume 2A Instruction Set Reference A-M (794101) страница 892019-04-28СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 89)

2A 3-553INSTRUCTION SET REFERENCE, A-MtempEIP ← 4 bytes at end of stackIF tempEIP[31:16] is not zero THEN #GP(0); FI;EIP ← Pop();CS ← Pop(); (* 32-bit pop, high-order 16 bits discarded *)tempEFLAGS ← Pop();EFLAGS ← (tempEFLAGS AND 257FD5H) OR (EFLAGS AND 1A0000H);ELSE (* OperandSize = 16 *)IF top 6 bytes of stack are not within stack limitsTHEN #SS; FI;EIP ← Pop(); (* 16-bit pop; clear upper 16 bits *)CS ← Pop(); (* 16-bit pop *)EFLAGS[15:0] ← Pop();FI;END;PROTECTED-MODE:IF VM = 1 (* Virtual-8086 mode: PE = 1, VM = 1 *)THENGOTO RETURN-FROM-VIRTUAL-8086-MODE; (* PE = 1, VM = 1 *)FI;IF NT = 1THENGOTO TASK-RETURN; (* PE = 1, VM = 0, NT = 1 *)FI;IF OperandSize = 32THENIF top 12 bytes of stack not within stack limitsTHEN #SS(0); FI;tempEIP ← Pop();tempCS ← Pop();tempEFLAGS ← Pop();ELSE (* OperandSize = 16 *)IF top 6 bytes of stack are not within stack limitsTHEN #SS(0); FI;tempEIP ← Pop();tempCS ← Pop();tempEFLAGS ← Pop();tempEIP ← tempEIP AND FFFFH;tempEFLAGS ← tempEFLAGS AND FFFFH;FI;IF tempEFLAGS(VM) = 1 and CPL = 0THENGOTO RETURN-TO-VIRTUAL-8086-MODE;ELSE3-554 Vol.

2AIRET/IRETD—Interrupt ReturnINSTRUCTION SET REFERENCE, A-MGOTO PROTECTED-MODE-RETURN;FI;IA-32e-MODE:IF NT = 1THEN #GP(0);ELSE IF OperandSize = 32THENIF top 12 bytes of stack not within stack limitsTHEN #SS(0); FI;tempEIP ← Pop();tempCS ← Pop();tempEFLAGS ← Pop();ELSE IF OperandSize = 16THENIF top 6 bytes of stack are not within stack limitsTHEN #SS(0); FI;tempEIP ← Pop();tempCS ← Pop();tempEFLAGS ← Pop();tempEIP ← tempEIP AND FFFFH;tempEFLAGS ← tempEFLAGS AND FFFFH;FI;ELSE (* OperandSize = 64 *)THENtempRIP ← Pop();tempCS ← Pop();tempEFLAGS ← Pop();tempRSP ← Pop();tempSS ← Pop();FI;GOTO IA-32e-MODE-RETURN;RETURN-FROM-VIRTUAL-8086-MODE:(* Processor is in virtual-8086 mode when IRET is executed and stays in virtual-8086 mode *)IF IOPL = 3 (* Virtual mode: PE = 1, VM = 1, IOPL = 3 *)THEN IF OperandSize = 32THENIF top 12 bytes of stack not within stack limitsTHEN #SS(0); FI;IF instruction pointer not within code segment limitsTHEN #GP(0); FI;EIP ← Pop();CS ← Pop(); (* 32-bit pop, high-order 16 bits discarded *)EFLAGS ← Pop();IRET/IRETD—Interrupt ReturnVol.

2A 3-555INSTRUCTION SET REFERENCE, A-M(* VM, IOPL,VIP and VIF EFLAG bits not modified by pop *)ELSE (* OperandSize = 16 *)IF top 6 bytes of stack are not within stack limitsTHEN #SS(0); FI;IF instruction pointer not within code segment limitsTHEN #GP(0); FI;EIP ← Pop();EIP ← EIP AND 0000FFFFH;CS ← Pop(); (* 16-bit pop *)EFLAGS[15:0] ← Pop(); (* IOPL in EFLAGS not modified by pop *)FI;ELSE#GP(0); (* Trap to virtual-8086 monitor: PE = 1, VM = 1, IOPL < 3 *)FI;END;RETURN-TO-VIRTUAL-8086-MODE:(* Interrupted procedure was in virtual-8086 mode: PE = 1, CPL=0, VMIF top 24 bytes of stack are not within stack segment limitsTHEN #SS(0); FI;IF instruction pointer not within code segment limitsTHEN #GP(0); FI;CS ← tempCS;EIP ← tempEIP;EFLAGS ← tempEFLAGS;TempESP ← Pop();TempSS ← Pop();ES ← Pop(); (* Pop 2 words; throw away high-order word *)DS ← Pop(); (* Pop 2 words; throw away high-order word *)FS ← Pop(); (* Pop 2 words; throw away high-order word *)GS ← Pop(); (* Pop 2 words; throw away high-order word *)SS:ESP ← TempSS:TempESP;CPL ← 3;(* Resume execution in Virtual-8086 mode *)END;= 1 in flag image *)TASK-RETURN: (* PE = 1, VM = 0, NT = 1 *)Read segment selector in link field of current TSS;IF local/global bit is set to localor index not within GDT limitsTHEN #TS (TSS selector); FI;Access TSS for task specified in link field of current TSS;IF TSS descriptor type is not TSS or if the TSS is marked not busy3-556 Vol.

2AIRET/IRETD—Interrupt ReturnINSTRUCTION SET REFERENCE, A-MTHEN #TS (TSS selector); FI;IF TSS not presentTHEN #NP(TSS selector); FI;SWITCH-TASKS (without nesting) to TSS specified in link field of current TSS;Mark the task just abandoned as NOT BUSY;IF EIP is not within code segment limitTHEN #GP(0); FI;END;PROTECTED-MODE-RETURN: (* PE = 1 *)IF return code segment selector is NULLTHEN GP(0); FI;IF return code segment selector addresses descriptor beyond descriptor table limitTHEN GP(selector); FI;Read segment descriptor pointed to by the return code segment selector;IF return code segment descriptor is not a code segmentTHEN #GP(selector); FI;IF return code segment selector RPL < CPLTHEN #GP(selector); FI;IF return code segment descriptor is conformingand return code segment DPL > return code segment selector RPLTHEN #GP(selector); FI;IF return code segment descriptor is not presentTHEN #NP(selector); FI;IF return code segment selector RPL > CPLTHEN GOTO RETURN-OUTER-PRIVILEGE-LEVEL;ELSE GOTO RETURN-TO-SAME-PRIVILEGE-LEVEL; FI;END;RETURN-TO-SAME-PRIVILEGE-LEVEL: (* PE = 1, RPL = CPL *)IF new mode ≠ 64-Bit ModeTHENIF tempEIP is not within code segment limitsTHEN #GP(0); FI;EIP ← tempEIP;ELSE (* new mode = 64-bit mode *)IF tempRIP is non-canonicalTHEN #GP(0); FI;RIP ← tempRIP;FI;CS ← tempCS; (* Segment descriptor information also loaded *)EFLAGS (CF, PF, AF, ZF, SF, TF, DF, OF, NT) ← tempEFLAGS;IF OperandSize = 32 or OperandSize = 64IRET/IRETD—Interrupt ReturnVol.

2A 3-557INSTRUCTION SET REFERENCE, A-MTHEN EFLAGS(RF, AC, ID) ← tempEFLAGS; FI;IF CPL ≤ IOPLTHEN EFLAGS(IF) ← tempEFLAGS; FI;IF CPL = 0THEN (* VM = 0 in flags image *)EFLAGS(IOPL) ← tempEFLAGS;IF OperandSize = 32 or OperandSize = 64THEN EFLAGS(VIF, VIP) ← tempEFLAGS; FI;FI;END;RETURN-TO-OUTER-PRIVILEGE-LEVEL:IF OperandSize = 32THENIF top 8 bytes on stack are not within limitsTHEN #SS(0); FI;ELSE (* OperandSize = 16 *)IF top 4 bytes on stack are not within limitsTHEN #SS(0); FI;FI;Read return segment selector;IF stack segment selector is NULLTHEN #GP(0); FI;IF return stack segment selector index is not within its descriptor table limitsTHEN #GP(SSselector); FI;Read segment descriptor pointed to by return segment selector;IF stack segment selector RPL ≠ RPL of the return code segment selectoror the stack segment descriptor does not indicate a a writable data segment;or the stack segment DPL ≠ RPL of the return code segment selectorTHEN #GP(SS selector); FI;IF stack segment is not presentTHEN #SS(SS selector); FI;IF new mode ≠ 64-Bit ModeTHENIF tempEIP is not within code segment limitsTHEN #GP(0); FI;EIP ← tempEIP;ELSE (* new mode = 64-bit mode *)IF tempRIP is non-canonicalTHEN #GP(0); FI;RIP ← tempRIP;FI;CS ← tempCS;3-558 Vol.

2AIRET/IRETD—Interrupt ReturnINSTRUCTION SET REFERENCE, A-MEFLAGS (CF, PF, AF, ZF, SF, TF, DF, OF, NT) ← tempEFLAGS;IF OperandSize = 32THEN EFLAGS(RF, AC, ID) ← tempEFLAGS; FI;IF CPL ≤ IOPLTHEN EFLAGS(IF) ← tempEFLAGS; FI;IF CPL = 0THENEFLAGS(IOPL) ← tempEFLAGS;IF OperandSize = 32THEN EFLAGS(VM, VIF, VIP) ← tempEFLAGS; FI;IF OperandSize = 64THEN EFLAGS(VIF, VIP) ← tempEFLAGS; FI;FI;CPL ← RPL of the return code segment selector;FOR each of segment register (ES, FS, GS, and DS)DOIF segment register points to data or non-conforming code segmentand CPL > segment descriptor DPL (* Stored in hidden part of segment register *)THEN (* Segment register invalid *)SegmentSelector ← 0; (* NULL segment selector *)FI;OD;END;IA-32e-MODE-RETURN: (* IA32_EFER.LMA = 1, PE = 1 *)IF ( (return code segment selector is NULL) or (return RIP is non-canonical) or(SS selector is NULL going back to compatibility mode) or(SS selector is NULL going back to CPL3 64-bit mode) or(RPL <> CPL going back to non-CPL3 64-bit mode for a NULL SS selector) )THEN GP(0); FI;IF return code segment selector addresses descriptor beyond descriptor table limitTHEN GP(selector); FI;Read segment descriptor pointed to by the return code segment selector;IF return code segment descriptor is not a code segmentTHEN #GP(selector); FI;IF return code segment selector RPL < CPLTHEN #GP(selector); FI;IF return code segment descriptor is conformingand return code segment DPL > return code segment selector RPLTHEN #GP(selector); FI;IF return code segment descriptor is not presentTHEN #NP(selector); FI;IF return code segment selector RPL > CPLIRET/IRETD—Interrupt ReturnVol.

2A 3-559INSTRUCTION SET REFERENCE, A-MTHEN GOTO RETURN-OUTER-PRIVILEGE-LEVEL;ELSE GOTO RETURN-TO-SAME-PRIVILEGE-LEVEL; FI;END;Flags AffectedAll the flags and fields in the EFLAGS register are potentially modified, depending onthe mode of operation of the processor. If performing a return from a nested task toa previous task, the EFLAGS register will be modified according to the EFLAGS imagestored in the previous task’s TSS.Protected Mode Exceptions#GP(0)If the return code or stack segment selector is NULL.If the return instruction pointer is not within the return codesegment limit.#GP(selector)If a segment selector index is outside its descriptor table limits.If the return code segment selector RPL is greater than the CPL.If the DPL of a conforming-code segment is greater than thereturn code segment selector RPL.If the DPL for a nonconforming-code segment is not equal to theRPL of the code segment selector.If the stack segment descriptor DPL is not equal to the RPL ofthe return code segment selector.If the stack segment is not a writable data segment.If the stack segment selector RPL is not equal to the RPL of thereturn code segment selector.If the segment descriptor for a code segment does not indicateit is a code segment.If the segment selector for a TSS has its local/global bit set forlocal.If a TSS segment descriptor specifies that the TSS is not busy.If a TSS segment descriptor specifies that the TSS is not available.#SS(0)If the top bytes of stack are not within stack limits.#NP(selector)If the return code or stack segment is not present.#PF(fault-code)If a page fault occurs.#AC(0)If an unaligned memory reference occurs when the CPL is 3 andalignment checking is enabled.#UDIf the LOCK prefix is used.3-560 Vol.

2AIRET/IRETD—Interrupt ReturnINSTRUCTION SET REFERENCE, A-MReal-Address Mode Exceptions#GPIf the return instruction pointer is not within the return codesegment limit.#SSIf the top bytes of stack are not within stack limits.Virtual-8086 Mode Exceptions#GP(0)If the return instruction pointer is not within the return codesegment limit.#PF(fault-code)If a page fault occurs.IF IOPL not equal to 3.#SS(0)If the top bytes of stack are not within stack limits.#AC(0)If an unaligned memory reference occurs and alignmentchecking is enabled.#UDIf the LOCK prefix is used.Compatibility Mode Exceptions#GP(0)If EFLAGS.NT[bit 14] = 1.Other exceptions same as in Protected Mode.64-Bit Mode Exceptions#GP(0)If EFLAGS.NT[bit 14] = 1.If the return code segment selector is NULL.If the stack segment selector is NULL going back to compatibilitymode.If the stack segment selector is NULL going back to CPL3 64-bitmode.If a NULL stack segment selector RPL is not equal to CPL goingback to non-CPL3 64-bit mode.If the return instruction pointer is not within the return codesegment limit.If the return instruction pointer is non-canonical.#GP(Selector)If a segment selector index is outside its descriptor table limits.If a segment descriptor memory address is non-canonical.If the segment descriptor for a code segment does not indicateit is a code segment.If the proposed new code segment descriptor has both the D-bitand L-bit set.If the DPL for a nonconforming-code segment is not equal to theRPL of the code segment selector.If CPL is greater than the RPL of the code segment selector.IRET/IRETD—Interrupt ReturnVol.

Характеристики

Тип файла
PDF-файл
Размер
2,92 Mb
Материал
Тип материала
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6392
Авторов
на СтудИзбе
307
Средний доход
с одного платного файла
Обучение Подробнее