进入保护模式(十)堆栈的声明
博客专区 > Cobbage 的博客 > 博客详情
进入保护模式(十)堆栈的声明
Cobbage 发表于4年前
进入保护模式(十)堆栈的声明
  • 发表于 4年前
  • 阅读 20
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 技术升级10大核心产品年终让利>>>   

摘要: ;本来要实现异常的处理,但是现在做不了; ;之前很纠结堆栈大小的声明,这里扯一点

一、堆栈

       堆栈数据结构中特点是先进后出的。

       堆栈作用有哪些?

                         书上那时候讲了个四则运算的处理,括号匹配类的;进制之间的转换;

                          最简单产生个栈的异常,写个没有结束的递归;

        目前用的环境中堆栈主要用来存储:1.地址环境信息,例如跳转,中断;

                                                  2.参数传递,或者直接寄存器;

                                                  3.异常产生的错误信息也是存在这里的

       在保护模式下对栈的权限使用是很严格的,当前的权限(CPL)要要大于等于目标(DPL)的权限

       并在任务切换的时候信息保存也是要在栈中切换的,对后面实现多任务(用户态)很重要的;

       当用户-》内核 堆栈的信息要转移的 由于请求不了高权限的堆栈内容要转移。

二、内容大小的声明

       (1)在实模式下地址方式是段:偏移量

           1.1由于堆栈的寻找地址减法的

           1.2所以声明一个数据段,然后最后一个位置指向sp;

               这个数据段就是大小了

---------------------------------------------------

       (2)保护模式下下的那

              2.1也可以像上面那样声明,直接简单

              2.2另一种方法自己计算

                  书上给的例子是 偏移地址 0x00007C00    大小《0xFFFFE000 初识地址0

                =》 0XFFFFFFFF       0XFFFFE000

                     0X00007C00      0X0007C00

                     0X0007DFF       0x00006C00

--------------------------------------------------------

        下面就看设置公用的栈地址,还是私用的了

        

     

共有 人打赏支持
Cobbage
粉丝 46
博文 109
码字总数 54478
×
Cobbage
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: