📄 memory.h
字号:
#ifndef _MEMORY_H
#define _MEMORY_H
#define __VIRTUAL_BASE (256*1024*1024)
struct TSS
{
ushort back_link,_bl;
ulong esp0;
ushort ss0,_ss0;
ulong esp1;
ushort ss1,_ss1;
ulong esp2;
ushort ss2,_ss2;
ulong cr3;
ulong eip;
ulong eflag;
ulong eax;
ulong ecx;
ulong edx;
ulong ebx;
ulong esp;
ulong ebp;
ulong esi;
ulong edi;
ushort es,_es;
ushort cs,_cs;
ushort ss,_ss;
ushort ds,_ds;
ushort fs,_fs;
ushort gs,_gs;
ushort ldt,_ldt;
ushort trap;
ushort io_map_base;
ulong end;
};
struct mem_map
{
int prog_pages;
uint *virtual_page;
uint *physical_page;
};
#define MAX_PAGE_TAB_MEM (4*1024*1024)
class memory
{
private:
void *physical_base; //cs=ds=ss=es=fs=gs
uint CS,DS,BSS,HEAP,SS;
byte kernel_stack[8192];
uint entry_point;
seg_desc ldt[2];
mem_map mm;
public:
ushort _tss_sel;
ushort _ldt_sel;
TSS tss;
heap _heap;
memory();
~memory();
void init_memory (void *buf,uint cs,uint ds,uint bss,uint ss,uint ep);
void set_table_entries();
void set_tss(uint eax,uint ebx,uint ecx,uint edx,uint esi,uint edi,uint ebp,uint gs,
uint fs,uint es,uint ds,uint eip,uint cs,uint eflags,uint esp,uint ss);
memory& operator=(memory &parent);
int try_to_replace(int fd,int argc,char **argv,char **env,uint cs,uint ds,
uint bss,uint ss,uint ep);
void clear();
void set_mem_map();
void set_ds(seg_desc &desc);
void set_cs(seg_desc &desc);
void show_tss();
uint get_pb()
{
return (uint)physical_base;
}
void show_ldt();
};
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -