《Orange’s 一个操作系统的实现》3.保护模式7-特权级转移(通过调用门转移目标段-有特权级转换-进入ring3-b)...

我们在进入ring3后,实现了高特权级到低特权级的转移,我们在原有代码上稍作修改,实现低特权级到高特权级的转移:

修改的代码如下:

1.修改调用门描述符和选择的特权级

; 门                               目标选择子,偏移,DCount, 属性
LABEL_CALL_GATE_TEST: Gate SelectorCodeDest,   0,     0, DA_386CGate+DA_DPL3;设置CPL为3

SelectorCallGateTest    equ    LABEL_CALL_GATE_TEST    - LABEL_GDT + SA_RPL3;设置RPL为3

满足CPL和RPL都小于等于调用门的DPL

 

 

2.在RING3代码段使用调用门调用RING0下的代码.

; CodeRing3
[SECTION .ring3]
ALIGN    32
[BITS    32]
LABEL_CODE_RING3:
    mov    ax, SelectorVideo
    mov    gs, ax
    mov    edi, (80 * 14 + 0) * 2
    mov    ah, 0Ch
    mov    al, '3'
    mov    [gs:edi], ax

    call    SelectorCallGateTest:0 ;使用调用门从ring3进入ring0

    jmp    $
SegCodeRing3Len    equ    $ - LABEL_CODE_RING3
; END of [SECTION .ring3]

此代码编译后是无法运行的,因为从低特权级到高特权级的转移时需要用到TSS的

转载于:https://www.cnblogs.com/Aoysme/archive/2011/01/18/1938594.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值