嘿为什么要先学这里不应该是for循环吗 相信很多读者都会产生以上疑问要的就是这种效果就让我们带着这个疑问开始这一节的学习先看源码:int _tmain(int argc _TCHAR argv[]){ int nNum = 26 printf(Mom I can sing my ABCrn) 听小Baby开始唱ABC了…… do { pr
1.9.1除法与倒数相乘 何为倒数相乘很简单编译器世界中倒数相乘的中心思想其实就是用乘法来代替除法运算它的原理很简单就是将被除数乘以除数的倒数其公式为xy = x(1y)我们拿102作为例子我可以得出以下推论:由 公式xy = x(1y) 可得 102 = 10(12) = 100.5 编译器也正是由这个公式才得以将除法转换为除法但是编译器为什么要这样做呢原因同样很简单因为乘法的
逆向的第一步是什么这要问你学习C语言的第一步是什么很自然的逆向的第一步当然也是大名鼎鼎HelloWorld了但是也不要因此就误认为这一节会很简单如果你是第一次接触逆向的话那么这一节还是有些难度的 好的让我们先写一个世界上最出名的程序:int _tmain(int argc _TCHAR argv[]){ printf(Hello Worldrn) return 0}
if-else分支几乎是所有人学习C语言后第一个接触的知识点那么我们学习逆向理所当然也应该从这里开始了其实关于if-else分支我们在上一节已经接触过了这一节我们将详细的探讨有关于if-else分支的识别与编译器可能使用的优化方案 在学习逆向的时候我们要始终记住我们是在与编译器打交道其次也要注重总结前辈们的经验我个人大致将if-else分支的逆向分为4种状态下面我将为大家一一讲解1.
我们先看一段代码:int _tmain(int argc _TCHAR argv[]){ int nNum = 2 switch (nNum) { case 0: printf(nNum=0) break case 1: printf(nNum=1) break case 2: prin
我们前面为各位读者分别介绍了转成if-esle与利用跳转表两种优化模式但是在最后我隐含着提出了一个问题既如果我们的switch-case分支两个数之差大于50甚至更多的时候那么我们此时是否仍需要利用跳转表来解决问题呢很显然我们不能这样做假如我们遇到如下这段代码:int _tmain(int argc _TCHAR argv[]){ switch (argc) { case