标签:指针 预处理 32位 有一个 http windows int 寻址 bash
一、学习笔记
EAX 累加器 EBX 基地址寄存器 ECX 计数寄存器 EDX 数据寄存器 EBP 堆栈基指针 ESI—— 变址寄存器 EDI—— ESP 堆栈顶指针 EIP 指令指针寄存器 CS 代码段寄存器 DS 数据段寄存器 ES 附加段寄存器 SS 堆栈段寄存器 FS 附加段寄存器 GS 附加段寄存器 b 8位 w 16位 l 32位 q 64位 movl %eax,%edx edx=eax 寄存器寻址 movl $0x123,%edx edx=0x123 立即寻址 movl 0x123,%edx edx=*(int32_t*)0x123 直接寻址 movl (%ebx),%edx edx=*(int32_t*)ebx 间接寻址 movl 4(%ebx),%edx edx=*(int32_t*)(ebx+4) 变址寻址 堆栈是向下增长的,一块堆栈, | | 高地址 | | | | | | 低地址 subl $4,%eax pushl %eax movl %eax,(%esp) movl(%esp),%eax popl %eax addl $4,%esp pushl %eip 伪指令 call 0x12345 pop $0x12345,%eip 伪指令
二、作业实验:
实验代码如下:
1 int g(int x) 2 { 3 return x + 3; 4 } 5 6 int f(int x) 7 { 8 return g(x); 9 } 10 11 int main(void) 12 { 13 return f(8) + 1; 14 }
汇编程序如下
上述汇编过程能够叙述下来。但有一个思考,linux下对.c程序进行预处理一直到上述的汇编操作,我想对于同样的程序,使用windows平台上使用VS2015编译后能否通过逆向的工具和方式重现如上述linux上的汇编代码,我使用同样的代码进行了尝试,但是不成功。
2017-2018-1 20179219《Linux内核原理与分析》第二周作业
标签:指针 预处理 32位 有一个 http windows int 寻址 bash
原文地址:http://www.cnblogs.com/ghost00011011/p/7638495.html