递增函数指针

前端之家收集整理的这篇文章主要介绍了递增函数指针前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我刚刚了解了函数指针(指向存储函数的机器代码的地址的指针).这让我想到机器代码以及它如何存储在内存中.

机器代码是否连续存储在内存中,以便可以“手动”增加指针,直到指向以下/之前的功能

这是一个调试器呢?他让我“看”程序计数器指向机器代码的位置?

结论:可以用函数指针编程一个原始调试器?

我明白了这个权利,还是我要走了?

解决方法

有点.你假设函数将以与源代码相同的方式在内存中进行布局.很可能,他们不会 – 编译器通常将它们移动到所有的任何地方.

然而,您可以做的是使用指向当前指令的指针来逐步执行代码,并将该计数器递增一定量以获得下一条指令.然而,在这种情况下,我们不再称它为一个函数指针,因为它不只是指向一个函数的开头;相反,我们称之为instruction pointer.

事实上,这正是计算机的工作原理 – 它有一个特殊的register,称为program counter,它始终指向当前指令,并在每个指令之后递增一定量(GOTO命令相当于将值写入程序计数器).

然而,在现实世界中,这不是how debuggers work – 实际上,我甚至不确定是否有可能指向C中的代码段,而不是一个函数指针.更有可能的是,如果需要模拟程序计数器,则需要使用此技术,例如为其他处理器类型编写仿真器.

猜你在找的C&C++相关文章