- 论坛徽章:
- 59
|
1.开机后经第一条指令的说法,我也只有一个印象,但我找到这个,做了佐证:
(当然,无论如何,对操作系统编程人员来说,都可以认为开机后进入的是实模式)
10.2.3 First Instructions
After RESET, address lines A{31-20} are automatically asserted for
instruction fetches. This fact, together with the initial values of CS:IP,
causes instruction execution to begin at physical address FFFFFFF0H. Near
(intrasegment) forms of control transfer instructions may be used to pass
control to other addresses in the upper 64K bytes of the address space. The
first far (intersegment) JMP or CALL instruction causes A{31-20} to drop
low, and the 80386 continues executing instructions in the lower one
megabyte of physical memory. This automatic assertion of address lines
A{31-20} allows systems designers to use a ROM at the high end of
the address space to initialize the system.
2.这个问题,看来是我对问题的理解有误。版主说的是直接JMP。据我所知,在INTEL的机器上,最好只在相同的RING上JMP,不然SS出错的机率是非常大的。当然,我想也没有操作系统的设计者会在不同的RING间JMP。
就问题本身而言,虽然我们无法直接JMP,但JMP TSS却是可以的,它会使得SS,DS,CS都有一样的DPL。当然前提是你正确地设置LDT。
_________________________________________________________________
此外,版主的确十分了解INTEL的CPU,在下十分感服。不过,在下是“应用主义”一族的。只有没有立即用到,我是不会关心技术问题的 。我发表的论点大多数只是借于经验。若有不慎之处,还请见谅。此外,版主所提到的:
- Intel 文档里是说明不能 jmp /call 的低权限的代码。须 CPL >= DPL (数字上)
复制代码
是对的。不过和我说的是两回事。也就是说,是我没把问题说请楚。
[ 本帖最后由 folklore 于 2007-10-31 10:40 编辑 ] |
|