问答题
在保护虚地址方式下,控制转移有哪些情形?通过转移指令JMP的转移与通过调用指令CALL的转移有何区别?
【正确答案】控制转移基本上可分为两大类:同一任务内的控制转移和任务间的控制转移(任务切换)。同一任务的控制转移义可分为:段内转移、特权级不变的段间转移和特权级变换的段间转移。段内转移与实地址方式下相似,不涉及特权级变换和任务切换。只有段间转移才涉及特权变换和任务切换。与实地址方式一样,指令JMP、CALL和RET都具有段间转移的功能,指令INT和IRET总是段间转移。此外,中断/异常也将引起段间转移。有时把这些具有段间转移功能的指令统称为段问转移指令。
在执行段间转移指令JMP时,如果指令内所含指针指示一个代码段,那么就直接开始上述向代码段转移的步骤;在执行段问调用指令CALL时,如果指令内所含指针指示一个代码段,那么就把返回地址指针压入堆栈,然后就直接开始上述向目标代码段转移的步骤。
【答案解析】