当前位置: 首页 > news >正文

淄博市沂源县建设局网站图片制作动画

淄博市沂源县建设局网站,图片制作动画,长沙地铁最新招聘500人,网站建设音乐插件怎么弄上节提到#xff0c;现在cs:ip指向0地址#xff0c;此处存储着作为操作系统核心代码的system模块#xff0c;是由head.s和 main.c以及后面所有源代码文件编译链接而成。head.s(以下简称head)紧挨着main.c#xff0c;我们先执行head。 重新设置内核栈 _pg_dir: _startup_3…上节提到现在cs:ip指向0地址此处存储着作为操作系统核心代码的system模块是由head.s和 main.c以及后面所有源代码文件编译链接而成。head.s(以下简称head)紧挨着main.c我们先执行head。 重新设置内核栈 _pg_dir: _startup_32:mov eax,0x10mov ds,axmov es,axmov fs,axmov gs,axlss esp,_stack_start 标号 _pg_dir表示页目录意为在设置分页机制时页目录会存放在这里也会覆盖这里的代码。setup.s(以下简称setup)已经设置了gdt现在要对段描述符重新设置包括ds/es/fs/gs。都被设置为0x1000010000在保护模式下即段选择子为2指向数据段描述符。根据我们之前gdt表的内容数据段的基地址是0于是ds/es/fs/gs的基地址也是0。 lss 指令相当于让 ss:esp 这个栈顶指针esp是sp的32为扩展指向了 _stack_start 这个标号的位置对比lds mem,reg将段描述符mem的高位存储在 reg 寄存器的高位而段描述符的低位存储在ds寄存器的低位。当然之前在bootsec所设置的栈顶0x9ff00位置现在变成了0:stack_start // include/linux/mm.h #define PAGE_SIZE 4096// kernel/sched.c long user_stack [ PAGE_SIZE2 ] ; struct {long * a;short b;} stack_start { user_stack [PAGE_SIZE2] , 0x10 }; 其实从第三节得知我们已经在setup的内存位于0x90200设置了idt、gdt。现在则通过call setup_idt和setup_gdt重新设置位于head的内存位于0x90000的idt、gdt。为何重复设置 因为位于setup的内存会在将来设计缓冲区时被覆盖而且也不能将setup中的idt和gdt直接copy到现在的位置在执行setup的时候copy无意义因为如果先执行setup后移动system会覆盖掉copy的idt、gdt如果先移动system后执行setup则会覆盖掉head内容于是我们不得不在head重新设置它们。 设置IDT 即便是setup里面的idt也都是空的现在由head程序正式设置。 setup_idt:lea edx,ignore_int ;lea将ignore_int偏移地址(16bit)/而mov将第二操作数的内存内容 放入edxmov eax,00080000h ;将段选择子0x0008置入eax高16位mov ax,dx ;将ignore_int偏移地址置入eax低16位mov dx,8E00h ;interrupt gate - dpl0, presentlea edi,_idt ;lea将_idt所代表偏移地址放入edimov ecx,256 ;cx用来计数256次 rp_sidt:mov [edi],eax ;[]寄存器间接寻址,表示eax的内容赋予“以edi的内容作为地址指针的”内存。mov [edi4],edxadd edi,8dec ecxjne rp_sidtlidt fword ptr idt_descr ;fword ptr是48位指针用于远程跳转retidt_descr:dw 256*8-1 ;db字节(1 byte)类型dw字类型(2 byte)dd双字类型(4 byte)dd _idt_idt:DQ 256 dup(0) ;伪操作用来定义操作数占用的字节数 ignore_int作为默认中断处理程序函数地址会放入中断描述符内。中段描述符结构如下 这段代码意为将eax作为低32bit、edx作为高32bit填充一个中断描述符并以cx作为计数器一共填充256次共256项以此来初始化整个IDT。最后通过lidt加载中断描述符至idtr让cpu识别。 重新设置GDT setup_gdt:lgdt gdt_descrret ... .align 2 .word 0 gdt_descr:.word 256*8-1 ; gdtr内容是gdt的界限, 以及gdt所在的地址.long _gdt ; 每个gdt项占8byte, 一共256个gdt项, gdt总量2048byte.align 3 _gdt: .quad 0x0000000000000000; ;.quad为4word/8byte(等同.word 0,0,0,0). NULL desp.quad 0x00c09a0000000fff ; 代码段, 0fff4096, 4096*409616Mb.quad 0x00c0920000000fff ; 数据段, 除了基地址以外其他同上.quad 0x0000000000000000 ; TEMPORARY - dont us.fill 252,8,0 ; space for LDTs and TSSs etc 对照gdt项所设置内容0x00c09a0000000fff的二进制和全局描述符格式 g(granularity)粒度位如为0段限长以1字节为单元为1段限长以4K字节为单元dpl描述符特权级0和3级p段存在位该位为1指示描述符存在。于是0x00c09a00表示g为1p为1那么此代码段限长为4096*4K16M。 重置了idt/gdt接着又重新执行了一遍刚刚执行过的代码。为什么要重新设置这些段寄存器呢因为修改了 gdt所以要重新设置一遍做个刷新这样修改才能生效。 call setup_idt ;设置中断描述符表 call setup_gdt ;设置全局描述符表 mov eax,10h mov ds,ax mov es,ax mov fs,ax mov gs,ax lss esp,_stack_start 检验A20地址线是否打开 需要检验A20地址线是否打开因为这会影响保护模式是否有效。这里通过如果没打开A20则0x100000会回滚到0x000000来判断并不断循环直到A20开启为止 xor eax,eax ; 异或,清空eax 1: inc eax ; check that A20 really IS enabledmov 0x000000,eax ; loop forever if it isntcmp 0x100000,eaxje 1b ; zf为0则跳转(通常搭配cmp,如源操作数和目标操作数相等,则跳转) 在检测到保护模式有效后如果是486之前的cpu会配备数学协处理器芯片以增强浮点计算能力。大概是先检查数学协处理器芯片是否存在。方法是修改控制寄存器CR0,在假设协处理器存在的情况下执行一个协处理器指令如果出错的话则说明协处理器芯片不存在。这段代码不贴出来了详细参见flash-linux0.11-talk/head.s at main · dibingfa/flash-linux0.11-talk · GitHub 开启分页机制为进入main函数做准备 设置完协处理器后将要开启分页机制这是head的最后阶段也是执行main函数前的最后阶段。 ...jmp after_page_tables ... after_page_tables:push 0push 0push 0push L6push _mainjmp setup_paging L6:jmp L6 可以看到将main函数参数、L6以及main函数地址都压栈然后跳转到设置分页的标号。这些压栈是为了开启分页后执行main函数。 此外即便main函数退出程序也不会结束因为我们看到程序到L6这边是个死循环。
http://www.dnsts.com.cn/news/41726.html

相关文章:

  • 个人可以网站备案吗网站推广和宣传的方法
  • 网站首页模板图片黄山最佳旅游攻略
  • 获取网站访客qq 原理安徽省建设厅门户网站
  • 苏州seo建站app在线制作平台有哪些
  • 做生物学的网站网络营销是以什么为基础
  • 毕节网站建设海南省生态文明村建设促进会网站
  • 沧州网站建设外贸微信分销app
  • 专做茶叶的网站黑龙江微信网站开发
  • 网站文章标题有赞微商城怎么开店
  • 深圳外贸网站建设工作室wordpress 获取页面链接
  • 四川 优质高职建设网站菏泽市住房和城乡建设局网站
  • 网站建设的小说301不同类型网站
  • 如何建设线报网站无锡网页设计排名
  • 东莞整站优化义乌详情页制作
  • 免费创建论坛网站杭州市建设工程交易网
  • 石家庄网站制作官网网页设计实训报告格式
  • 哪些网上订餐的网站做的好包装设计网站免费
  • 设计公司加盟seo优化教学视频
  • asp net mvc做网站做文案公众号策划兼职网站
  • 前端电商网站设计论文申泽seo
  • 创建公司网站 优帮云烟台网站建设专业臻动传媒
  • 深圳做营销网站电商网站开发难点
  • 网站二次开发教程紧急通知界面访问升级中狼人
  • 网站优化外包公司qq电脑版
  • 专业网站优化关键词seo快速排名案例
  • 中国建设人才信息网站官网广西桂林特产
  • 深圳网站开发设计贸易型企业网站建设
  • 个人网站主页html5天元建设集团有限公司新闻
  • 阿里巴巴网站建设规划网站建设网络营销平台: 云搜系统
  • 阿里云快速做网站qq网页版登录官网登录入口