memory.h

来自「Jazmyn is a 32-bit, protected mode, mult」· C头文件 代码 · 共 85 行

H
85
字号
#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 + =
减小字号Ctrl + -
显示快捷键?