包含标签 C articles

C语言3 -变量

变量声明 变量类型 变量名; 变量类型 用来说明宽度是多大 int 4个字节 short 2个字节 char 1个字节 变量名的命名规则 只能以字母、数组、下划线组成,却第一个元素必须是字母或者下划线 区分大小写 不能使用C语言的关键字 全局变量 编译的时候就已经确定了内存地址和宽度,变量名就是内存地址的别名 如果不重新编译,全局……

Continue reading

C语言2-参数的传递与返回值

short plus(short x,short y,short z,short m) { return x+y+z+m; } void main() //入口程序 程序开始执行的地方 { //调用函数 plus(1,2,3,4); return; //执行结束 } 找到plus函数的反汇编 理解每一行汇编代码 找到参数是如何传递 返回值是如何返回的 plus函数对应反汇编代码和意义 调用函数调用: push 4 push 3 push 2 push 1 call (plus) 0041100f add esp,10h 下面是call内部 push ebp mov ebp,esp sub esp,40h 以上三步都是为……

Continue reading

C语言对应汇编代码

void main(){ __asm { mov eax,eax mov eax,eax mov eax,eax mov eax,eax } return; } int plus(int x,int y) { return 0; } --- C:\Project\2017_09_24\Main.cpp ------------------------------------------ 1: 2: void main(){ 0040D3F0 push ebp 0040D3F1 mov ebp,esp 0040D3F3 sub esp,40h 0040D3F6 push ebx 0040D3F7 push esi 0040D3F8 push edi 0040D3F9 lea edi,[ebp-40h] 0040D3FC mov ecx,10h 0040D401 mov eax,0CCCCCCCCh 0040D406 rep stos dword ptr [edi] 3: __asm 4: { 5: mov eax,eax 0040D408 mov eax,eax 6: mov eax,eax 0040D40A mov eax,eax 7: mov eax,eax 0040D40C mov eax,eax 8: mov eax,eax 0040D40E mov eax,eax 9: } 10: return; 11: } 0040D410 pop edi 0040D411 pop esi 0040D412 pop ebx 0040D413 add esp,40h 0040D416 cmp ebp,esp 0040D418 call __chkesp (0040d430) 0040D41D mov esp,ebp 0040D41F pop ebp 0040D420 ret --- C:\Project\2017_09_24\Main.cpp ------------------------------------------ 12: 13: int plus(int x,int y) 14: { 0040D470 push ebp 0040D471 mov……

Continue reading