⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 memory.h

📁 Jazmyn is a 32-bit, protected mode, multitasking OS which runs on i386 & above CPU`s. Its complete
💻 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 + -