我们学习编程都知道栈的超界限问题是非常严重的问题,他可能会覆盖掉其他数据,并且我们不知道这个数据是我们自己保存的用于其他用途的数据还是系统的数据,这样常常容易引发一连串的问题。

在学习汇编的时候,我们熟悉的8086cpu通过ss:sp来指向栈顶指针,从而来控制入栈,出栈,入栈的时候sp = sp-2 ;出栈则是sp = sp + 2。但是我们并不知道栈的大小,栈顶和栈底在哪里?这样就容易引发超界问题。

想一想解决办法:我们是不是可以通过一个寄存器来保存栈顶和栈底的地址,这样就可以通过判定栈顶指针的地址来判定是否在这个栈的空间内,细细一想,方案的确可行,但是这并不是我们想当然的事情,而是cpu设计上的事情。

但是实际上8086cpu并没有这样的寄存器功能,这就只能我们自己进行判断了,从而来防止超界问题的出现。可能这就是8086的设计缺陷吧,无法通过系统内部机制,去控制超界问题。

最新文章

  1. web性能优化:详说浏览器缓存
  2. 【转】Java面试题全集2.2(上)
  3. OpenGL 像素在内存中的排列方式
  4. [原创]java WEB学习笔记102:Spring学习---Spring Bean配置:bean配置方式(工厂方法(静态工厂方法 & 实例工厂方法)、FactoryBean) 全类名
  5. Oracle、Microsoft SQL Server、Mysql
  6. sql取年月日
  7. 【转】itunes connect 如何修改主要语言
  8. 正则表达式start(),end(),group()方法
  9. mutate 转换
  10. 基于visual Studio2013解决算法导论之042单源最短路径
  11. java模拟斗地主发牌看牌
  12. Linux系统挂载操作mount详解
  13. 解决 Cannot find OpenSSL's <evp.h> 和sasl.h not found!
  14. Python读取JSON数据,并解决字符集不匹配问题
  15. HashMap 和 Hashtable 的 6 个区别,一般人不知道最后一条
  16. git reset的用法
  17. Chrome 控制台报错Unchecked runtime.lastError: The message port closed before a response was received
  18. rabbitmq 生产者 消费者(多个线程消费同一个队列里面的任务。) 一个通用rabbitmq消费确认,快速并发运行的框架。
  19. Christmas Spruce
  20. Filebeat的Registry文件解读

热门文章

  1. Architecture Review Board
  2. css3中什么时候用transition什么时候用animation实现动画
  3. jquery+html5实现单张图片上传预览
  4. C#内置委托类型Func和Action对比及用法
  5. CCF201312-2ISBN号码
  6. ubuntu修复找不到sudo命令
  7. JavaScript基础第04天笔记
  8. ArcGIS使用技巧(三)——关于投影
  9. CA周记 - 带你进⼊ OpenAI 的世界
  10. python学习-Day37