qq_32724269 2015-12-22 00:40 采纳率: 0%
浏览 1372

三十天自制操作系统中RETF的使用问题?

_start_app: ; void start_app(int eip, int cs, int esp, int ds, int *tss_esp0);
PUSHAD

MOV EAX,[ESP+36] ;EIP
MOV ECX,[ESP+40] ;CS
MOV EDX,[ESP+44] ;ESP
MOV EBX,[ESP+48] ;DS
MOV EBP,[ESP+52] ;tss_esp0
MOV [EBP ],ESP
MOV [EBP+4],SS
MOV ES,BX
MOV DS,BX
MOV FS,BX
MOV GS,BX
OR ECX,3

OR EBX,3

PUSH EBX ;SS
PUSH EDX ;ESP
PUSH ECX ;CS
PUSH EAX ;EIP
RETF
书中有一段这样的代码,代码的功能是跳转到一个局部段表中去(LDT)
也就是一个应用程序的调用,代码段和数据段全部在局部段表中,
现在要从全局段表(GDT)中跳转到局部段表中,调用的就是这个函数,我想问一下
这段程序是如何把esp,和ss段都给赋值上去的?还有作者说OR ECX,3和OR EBX,3是小技巧,请问一下,是什么技巧?

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥100 Jenkins自动化部署—悬赏100元
    • ¥15 关于#python#的问题:求帮写python代码
    • ¥20 MATLAB画图图形出现上下震荡的线条
    • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
    • ¥15 perl MISA分析p3_in脚本出错
    • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
    • ¥15 ubuntu虚拟机打包apk错误
    • ¥199 rust编程架构设计的方案 有偿
    • ¥15 回答4f系统的像差计算
    • ¥15 java如何提取出pdf里的文字?