二进制
文章平均质量分 76
fallinsky
不可揣测~
展开
-
字符值为0xcc
0xcc 16进制数,相当于十进制的204未初始化的变量DEBUG模式下运行时,未初始化的变量会被系统赋初值为0xCC未初始化的变量会被系统赋初值为0xCC,超过了ASCII码0-127这个范围,因此这个“字符串”被系统当成了宽字符组成的字符串,即两个字节数据组成一个字符,而0xCCCC表示的宽字符正好是乱码中的那个“烫”字。烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫是debug中未初始化的栈变量屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯屯是debug中未初始化的堆变量referen原创 2010-11-19 00:02:00 · 5949 阅读 · 3 评论 -
汇编语言call指令与ret指令的研究
<br />汇编语言call指令与ret指令的研究<br /><br />这阵子一直在研究王爽的《汇编语言》一书,写得真是很不错。<br />在这里对第十章的call与ret指令进行一下总结与研究。<br />实际上,call与ret(或retf)指令都是通过修改ip(或cs ip)来实现地址的转移。<br />cpu执行ret指令时,进行下面两步操作:<br />(1)(ip)=((ss)*16+sp)<br />(2)(sp)=(sp)+2<br />就是从栈里提出ip<br />用汇编语言描述即:<b转载 2010-11-22 15:02:00 · 831 阅读 · 0 评论 -
献给汇编初学者-函数调用堆栈变化分析
<br />跟一个朋友谈堆栈的时候 就写下了这段文字,顺便发到这里给需要的看看吧<br />汇编初学者比较头痛的一个问题<br />////////////////////////////////////////////////////////////////////<br />比如 我们有这样一个C函数<br />#include<stdio.h><br />long test(int a,int b)<br />{<br /> a = a + 1;<br /> b = b + 100;<br转载 2010-11-22 15:05:00 · 199 阅读 · 0 评论 -
堆栈中的EIP EBP ESP
<br />EIP,EBP,ESP都是系统的寄存器,里面存的都是些地址。 为什么要说这三个指针,是因为我们系统中栈的实现上离不开他们三个。 我们DC上讲过栈的数据结构,主要有以下特点: 后进先处。(这个强调过多)其实它还有以下两个作用: 1.栈是用来存储临时变量,函数传递的中间结果。 2.操作系统维护的,对于程序员是透明的。我们可能只强调了它的后进先出的特点,至于栈实现的原理,没怎么讲?下面我们就通过一个小例子说说栈的原理。先写个小程序:void fun(void){ printf("hello wor转载 2010-11-22 15:07:00 · 199 阅读 · 0 评论