码迷,mamicode.com
首页 > 系统相关 > 详细

2017-2018-1 20179219《Linux内核原理与分析》第二周作业

时间:2017-10-08 22:31:27      阅读:247      评论:0      收藏:0      [点我收藏+]

标签:指针   预处理   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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!