加入收藏 | 设为首页 | 会员中心 | 我要投稿 莆田站长网 (https://www.0594zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长资讯 > 评论 > 正文

如何找到链表的倒数第n个结点?

发布时间:2021-02-07 16:04:03 所属栏目:评论 来源:互联网
导读:对于一些解释执行(PHP、Python、JavaScript)或虚拟机执行(Java)的高级语言,这很容易办到,因为它们的执行都在解释器/虚拟机的掌控之中。 而对于像C、C++这样的底层编程语言,程序代码是直接编译成CPU的机器指令来执行的,这就需要CPU来提供对于调试的支持了

对于一些解释执行(PHP、Python、JavaScript)或虚拟机执行(Java)的高级语言,这很容易办到,因为它们的执行都在解释器/虚拟机的掌控之中。

而对于像C、C++这样的“底层”编程语言,程序代码是直接编译成CPU的机器指令来执行的,这就需要CPU来提供对于调试的支持了。

对于通常的断点,也就是程序执行到某个位置下就停下来,这种断点实现的方式,在x86/x64上,是利用了一条软中断指令:int 3来进行实现的。

注意,这里的int不是指高级语言里面的整数,而是表示interrupt中断的意思,是一条汇编指令,int 3则表示中断向量号为3的中断。

在我们使用调试器下断点时,调试器将会把对应位置的原来的指令替换为一个int 3指令,机器码为0xCC。这个动作对我们是透明的,我们在调试器中看到的依然是原来的指令,但实际上内存中已经不是原来的指令了。

顺便提一句,两个0xCC是汉字【烫】的编码,在一些编译器里,会给线程的栈中填充大量的0xCC,如果程序出错的时候,我们经常会看到很多烫烫烫出现,就是这个原因。
 

一些重要的标记位含义如下:

PG: 是否启用内存分页

AM: 是否启用内存对齐自动检查

WP: 是否开启内存写保护,若开启,对只读页面尝试写入时将触发异常,这一机制常常被用来实现写时复制功能

PE: 是否开启保护模式

除了CR0,另一个值得关注的寄存器是CR3,它保存了当前进程所使用的虚拟地址空间的页目录地址,可以说是整个虚拟地址翻译中的顶级指挥棒,在进程空间切换的时候,CR3也将同步切换。

调试寄存器

在x86/x64CPU内部,还有一组用于支持软件调试的寄存器。

调试,对于我们程序员是家常便饭,必备技能。但你想过你的程序能够被调试背后的原理吗?

程序能够被调试,关键在于能够被中断执行和恢复执行,被中断的地方就是我们设置的断点。那程序是如何能在遇到断点的时候停下来呢?
 

在非洲的自动化与全面连通性建设当中,以下几大具体方向有望带来可观的投资回报:

  • 数据标记:标记是指对数据单元进行分类的过程——例如,通过标记告知算法用于训练的图片中包含一只猫。这些也是AI时代的基本要素。未来,我们可以从非洲大陆收集到无穷无尽的数据并进行存储及分类。数据标记也将给非洲劳动力带来良好的就业机会,相对较低的入门门槛也让更多人能够接触到AI这一前沿技术领域。
  • 数据中心:随着人口爆炸性增长与数字参与度增加这一双重趋势,非洲数字基础设施的容量需求将急剧上升。Facebook与谷歌等企业正积极在非洲大陆铺设光纤环路,而尼日利亚Jamarkani家族、Actis以及Convergence Partners等投资者也在积极扩大公共数据中心的覆盖范围。这些资产,在本质上都属于为应用程序构建提供依托的不动产。
  • 频段:能够可靠且无缝传输大量数据的无线电频段是一种有限的资源。这些频段的经营许可将为相关投资者及持有企业带来巨大价值,负责监管及出售频段资源的政府部门也能够借此积累到大量治理经费。
  • 移动网络运营商:非洲仍是全球移动覆盖率最低的大陆,每一个角落都有着众多潜在用户。单在未来十年,尼日利亚就将出现6000万新的成年移动用户。因此,移动网络运营商必须重视这一机会,借此发展出值得信赖的自动化与连通类应用品牌,同时培养好与当地客户的关系。而这一切,都将带来丰厚的回报。

非洲绝不能错过这一轮技术升级浪潮,此前在新技术采用方面的落后已经给这片美丽的大陆带来灾难性的后果。但新的曙光已经显现,这片大陆上开始孕育众多新兴行业,不同地区之间相对平等的基建起点也给政策制定者及投资者带来更多机遇。

(编辑:莆田站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读