医生可以使用X射线、声谱仪、内窥镜和探查术来查看病人的身体内部。
这些上面这些工具就是软件世界的X射线。
如果你工作于 *** 作系统的内核模式,则无法使用绝大多数运行时工具,因为内核并不像用户进程那样运行。
可以使用编译时工具如lint,但除此之外我们只能使用石刀和燧斧了:将有序模式放入内存中,看看它们何时被覆盖(最常使用的两个是十六进制常量deadbeef和abadcafe),使用printf或类似的函数并记录跟踪信息。
帮助你识别硬件的工具只适用于高级学员阅读的材料对智者之语:可以把汇编代码嵌入到C代码中。
这通常只用于深入 *** 作系统核心非常依赖机器的任务。
例如设置某个特别的寄存器,把系统的状态从管理员模式转变为用户模式。
现在,我们把一条no-op(或其他指令)插入到使用SunPro SPARCompiler的C函数中:banana() { asm("nop"); }下面是如何在PC中使用Microsoft C嵌入汇编语言指令:__asm mov ah, 2__asm mov dl, 43h可以在汇编代码前冠以关键字“__asm”,也可以只使用该关键字一次,把所有的汇编代码放入一对花括号内,如下:__asm { mov ah, 2 mov dl, 43h int 21h }编译器并不会对代码作多少检查,所以很容易创建崩溃的程序。
但这是一种学习某种机器指令集很好的实践方法。
请看一下SPARC结构手册、汇编程序手册(大部分用于讲述语法和指导)和某个SPARC销售商所提供的数据书籍,如Cypress Semiconductor的SPARC RISC User’s Guide。
本文摘自《C专家编程》C代码。
C代码运行。
运行码运行…请!——Barbara Ling所有的C程序都做同一件事,观察一个字符,然后啥也不干。
——Peter Weinberger《C专家编程》展示了最优秀的C程序员所使用的编码技巧,并专门开辟了一章对C++的基础知识进行了介绍。
书中C的历史、语言特性、声明、数组、指针、链接、运行时、内存以及如何进一步学习C++等问题进行了细致的讲解和深入的分析。
全书撷取几十个实例进行讲解,对C程序员具有非常高的实用价值。
本书可以帮助有一定经验的C程序员成为C编程方面的专家,对于具备相当的C语言基础的程序员,本书可以帮助他们站在C的高度了解和学习C++。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)