问题描述
- 三十天自制操作系统中RETF的使用问题?
- _start_app: ; void start_app(int eip int cs int esp int ds int *tss_esp0);
PUSHADMOV 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 ESBX
MOV DSBX
MOV FSBX
MOV GSBX
OR ECX3OR EBX3
PUSH EBX ;SS
PUSH EDX ;ESP
PUSH ECX ;CS
PUSH EAX ;EIP
RETF
书中有一段这样的代码,代码的功能是跳转到一个局部段表中去(LDT)
也就是一个应用程序的调用,代码段和数据段全部在局部段表中,
现在要从全局段表(GDT)中跳转到局部段表中,调用的就是这个函数,我想问一下
这段程序是如何把esp,和ss段都给赋值上去的?还有作者说OR ECX,3和OR EBX,3是小技巧,请问一下,是什么技巧?
解决方案
windows操作系统下java程序使用sigar的使用问题
时间: 2025-01-20 11:14:51