压栈一次esp-4,ebp不变esp是栈顶指针寄存器,堆栈操作只和esp有关比如有一个函数a,有两个参数,一般是这样的PUSH 1 参数2压栈,esp-4PUSH 2 参数1压栈,esp-4CALL a 调用a:PUSH EBP 保存ebpMOV EBP,ESP 改变栈帧,以后访问参数通过ebp,访...
分类:
移动开发 时间:
2015-08-27 18:13:32
阅读次数:
221
我们在上一篇文章中提到Bootsect如何制作,接着我们来做打印字符,(某些朋友可能认为打印字符是最重要的,嘻嘻)
直接贴代码:
_ASM_Print_String:
push ebp
mov ebp, esp
mov esi, [ebp + 8] ; pszInfo
mov edi, [POS]
mov ah, [ebp + 12] ; color
.1:
lodsb
t...
分类:
其他好文 时间:
2015-08-15 12:04:39
阅读次数:
133
国内智能手机市场格局仍未尘埃落定,7月29日,国内知名研究机构赛诺Sino Market Research公布了6月份中国移动市场EBP市场月度分析报告,报告显示,在所有手机品牌中,乐视超级手机发展最为迅猛,上市首月即以56.4万台的销量占据4.5%的市场份额,位居手机行业线上份额前五,仅次于小米、荣耀、魅族和苹果,超越了联想、酷派、华为、中兴等老牌劲旅,堪称最大的一匹“黑马”。
...
分类:
移动开发 时间:
2015-08-05 08:55:40
阅读次数:
263
比如你用local在栈上定义了一个局部变量LocalVar,你知道实际的指令是什么么?一般都差不多像下面的样子: push ebp mov esp, ebp sub esp, 4 现在栈上就有了4各字节的空间,这就是你的局部变量。 接下来,你执行mov LocalVar, 4...
分类:
其他好文 时间:
2015-08-02 06:18:27
阅读次数:
215
根据前面的某一篇的文章,可以清楚的看到:对于每一个函数,通过这个函数的[ebp+x]就可以直接访问到它调用的时候传进来的形参的值,通过[ebp-x]就可以直接访问它的局部变量。所以printf这个函数不定参数的实现是通过栈机制实现的,在传入实参的时候,从右向左一次把各个参数压入栈,但是这些压入栈的数...
分类:
其他好文 时间:
2015-07-26 12:23:04
阅读次数:
99
这个函数改的深入理解程序设计 使用linux汇编语言里的例子。 相比书中的例子,主要改变为: 对底数为1。指数为1都进行特殊处理。 可以在64为平台编译通过,原书pushl %ebp 在64位平台编译不过,改为push %rbp。 ...
分类:
其他好文 时间:
2015-07-19 20:17:41
阅读次数:
155
很久没写技术文章了,今天实在不想写代码就写一篇技术贴,DxgkInitialize是虚拟显卡驱动注册自己的ddi所用的到函数,做虚拟显卡的人很多只知道去调用却不知道他的原理是什么今天我们就分析下。
首先我看下这个函数汇编代码
mov edi, edi
.text:00016605 push ebp
.tex...
分类:
其他好文 时间:
2015-07-14 15:36:17
阅读次数:
775
完成一个简单的时间片轮转多道程序内核代码重要汇编代码分析 asm volatile(
"movl %1,%%esp\n\t"
"pushl %1\n\t"
"pushl %0\n\t"
"ret\n\t"
"popl %%ebp\n\t"
:
: "c" (task[pid]...
分类:
其他好文 时间:
2015-07-10 11:24:50
阅读次数:
131
几种基本汇编指令详解常见寄存器
寄存器
16位
32位
64位 累加寄存器
AX
EAX
RAX
基址寄存器
BX
EBX
RBX
计数寄存器
CX
ECX
RCX
数据寄存器
DX
EDX
RDX
堆栈基指针
BP
EBP
RBP
变址寄存器
SI
ESI
RSI
堆栈顶指针
SP...
分类:
其他好文 时间:
2015-07-07 13:05:55
阅读次数:
395