汇编语言
schedule___
这个作者很懒,什么都没留下…
展开
-
汇编分析函数调用时栈空间情况
栈栈:往低地址方向生长esp:栈顶指针。通过push、pop操作 push 4:压栈,减 pop eax:出栈,加 call 地址:将下一条指令地址压栈函数调用 test(1, 3);//将函数参数压入栈空间00D21868 push 3 00D2186A push 1 //调用 __empty_global_delete,后jmp到test函数代码,同时将下条指令的地址压栈00D2186C call原创 2021-06-17 23:17:51 · 278 阅读 · 0 评论 -
a++ 与 ++a
a++先用a,让然a在自增 int a = 10;007A1006 mov dword ptr [ebp-4],0Ah int b = a++ + 2;// b[ebp-8] = a+2 = 12007A100D mov eax,dword ptr [ebp-4] 007A1010 add eax,2 007A1013 mov dword ptr [ebp-8],eax //a[ebp-4] = a+1原创 2021-06-17 16:52:20 · 68 阅读 · 0 评论 -
if-else switch效率
if-else依次不断比较;switch直接计算相对地址,条件较少时与if-else差不多int main(){ 00F31070 push ebp 00F31071 mov ebp,esp 00F31073 sub esp,0Ch int no = 4;00F31076 mov dword ptr [no],4 switch (no) {00F3107D mov eax,dword.原创 2021-06-17 16:14:28 · 66 阅读 · 0 评论 -
mov 及常见指令;汇编分析指针、引用、is-else
movmov dest,src 将src的内容赋值给dest[] 中括号内放的为内存地址word(2字节)、dword(4字节)、qword(8字节quad word)a的地址:008FF918h[ebp-8]:8F F920h-8h = a的地址ptr为固定写法Q&A Q:为什么不直接用a的地址 A:这种寻址方式更灵活,程序每次加载到内存的地址不是固定的。变量的地址CPU大部分是小端模式。高存高,低存低(高地址存高字节,低地原创 2021-06-16 16:22:46 · 596 阅读 · 0 评论 -
汇编语言 0x64
汇编语言种类8086汇编(16bit)x86汇编(32bit)x64汇编(64bit)ARM汇编x64汇编,根据编译器的不同有两种书写格式IntelAT&T项目AT&TIntel说明寄存器名%eaxeaxIntel不带%操作数顺序movl %eax,%edxmov edx,eax将eax的值赋值给edx立即数movl $3,%eax movl $0x10,%eaxmov eax,3 mov eax,0x10原创 2021-06-15 23:57:56 · 1447 阅读 · 0 评论