当前位置: 首页 > news >正文

17网站一起做网店池尾商圈上海找做网站公司哪家好

17网站一起做网店池尾商圈,上海找做网站公司哪家好,深圳推广软件十年乐云seo,江苏发布最新消息接上节#xff0c;在这里#xff0c;我们把参数放到了栈中保存#xff0c;大家注意到了#xff0c;参数入栈的顺序是先从最右边的开始#xff0c;最后压入的参数最左边的#xff0c;其实这是某种约定#xff0c;要不#xff0c;为什么不先把中间的参数src入栈呢。既然主…接上节在这里我们把参数放到了栈中保存大家注意到了参数入栈的顺序是先从最右边的开始最后压入的参数最左边的其实这是某种约定要不为什么不先把中间的参数src入栈呢。既然主调函数按照从右到左的顺序在栈中压入参数被调函数中必须分清楚这三个参数分别在栈中哪个位置。栈是向下扩展的这一点通过push指令压栈时栈指针esp的值越来越小能体现出来所以最后压入的第1个参数是离栈顶esp指向的地址最近最先入栈的第3个参数离栈顶最远。我们来看下在参数入栈后并调用函数时栈中布局是什么还是拿call mem_cpy为例。如图 由于栈指针esp已经在loader.S中被加上了0xc0000000所以其栈中地址都是内核所在的0xc0000000以上的高地址。用call指令进行函数调用时cpu会自动在栈中压入返回地址由图可见当调用kernel_init函数时当时的栈指针是0xc00008fc所以kernel_init的返回地址被存储在0xc00008fc处。栈中地址0xc00008f8处的内容是提供给函数mem_cpy的第三个参数即size。地址较低的0xc00008f4处是它的第二个参数即src地址0xc00008f0处是它的第一个参数即dst。 在mem_cpy的实现中我们访问栈中的参数是基于ebp来访问的这通常意味着要将esp的值赋给ebp。由于不知道ebp中的值是不是重要好的习惯是提前将ebp备份起来这就是在第228行的目的将ebp入栈备份这样在函数结束时能够将其恢复。我们在第229行将esp赋值给了ebp。所以上图中标出了ebp的指向由于后来在第230行又将ecx入栈故esp已经小于ebp。 栈中每个单元占用4字节既然是基于ebp来获得栈中的参数那么如图所示第1个参数dst的地址是ebp8第2个参数src的地址是ebp12第3个参数size的地址是ebp16。分别对这些地址用中括号取值后便可以得到实际的参数。 在继续往下说之前要给大家介绍个数据复制小团队。 首先要说一下字符串“搬运”指令族movsb、movsw、movsd。其中的movs代表move string后面的b代表bytew代表wordd代表dword。所以movsb的功能是搬运复制1字节movsw的功能是搬运复制2字节movsd的功能是搬运复制4字节。数据从哪里来搬到哪里去呢这三条指令是将DS:[E]SI指向的地址处的1或2或4个字节搬到ES[E]DI指向的地址处16位环境下源地址指针用SI寄存器目的地址指针用DI寄存器32位环境下源地址则用ESI目的地址则用EDI。话说虽然这三个指令叫字符串指令但它们可不是只用在字符串上因为字符串中的字符不也是按字节来存储吗任何数据在内存中都以字节存储单元来访问字符串只是表相本质上是复制字节所以它更多的被通用于复制数据。 以上三个命令只是复制固定的字节数每执行一次就复制1字节或2字节或4字节如果大量的数据需要复制则需要连续的运行所以要介绍另外一个指令rep。 rep指令是repeat重复的意思该指令是按照ecx寄存器中指定的次数重复执行后面的指定的指令每执行一次ecx自减1直到ecx等于0时为止所以在用rep重复执行某个指令之前一定要将ecx寄存器提前赋值。 似乎说完了但其实还差点什么您想如果想要复制一大块数据的话总该有人更新数据的来源和目的地吧。movs [bwd]只是从[e]si指向的地址处搬运1、2、4字节到[e]di指向的地址处它不会自动更新[e]si和[e]di。咱们总不能翻来覆去从同一个源地址搬运数据到另一个相同的目的地址吧。所以cld和sld指令就派上用场了这两个指令本质上是控制重复执行字符串指令时的[e]si 和[e]di的递增方式递增方式是指它们的值逐渐变大还是逐渐变小也就是说地址是往高地址方向变化还是往低地址方向变化这就是所说的方向。cld是指clean direction该指令是将eflags寄存器中的方向标志位DF置为0这样rep在循环执行后面的字符串指令时[e]si和[e]di根据使用的字符串搬运指令自动加上所搬运数据的字节大小这是由cpu自动完成的不用人工干预。比如执行一次movsd[e]si和[e]di就自动加4执行一次movsb[e]si和[e]di就自动加1。有清除方向标志位就会有设置方向标志位std是set direction该指令是将方向标志位DF置为1每次rep循环执行后面字符串指令时[e]si和[e]di自动减去所搬运数据的字节大小。 也许cpu认为地址由低向高处发展是理所应当的这无须设置所以此时DF标志为0。当由高地址向低地址发展时这不是正常自然的现象所以需要强调一下故要将DF标志置为1。 注意并不是在任何字符串控制指令中[e]si和[e]di都同时增减这要看字符串操作指令是否都用到了它们处理器只会增加用到的那个。字符串操作指令有很多比如有movs[bwd]、ins[bwd]和outs[bwd]、lods[bwd]和stos[bwd]esi和edi并不是被以上三组指令同时使用只有movs[bwd]才同时使用esi和edi通过rep指令组合执行时esi和edi根据DF位的值自增或自减。ins[bwd]是从端口读入数据到内存的目的地址故只涉及到edi的自增自减。outs[bwd]是把内存中的源数据写入端口故只涉及到esi的自增自减。lods[bwd]是把内存中的源数据加载到寄存器al、ax或eax自增自减操作也只涉及到esi。而stos[bwd]是将al、ax、eax中的值写入到内存中的目的地址故也只涉及到edi的自增自减。 好啦在稍微扩展了一小下之后咱们回到正题。 有了movs[bdw]指令族、重复执行指令rep方向指令cld和std这三剑客在一起配合工作就能够自由复制任何大块数据啦。万事俱备回到正题。 第227行的cld指令其实放在movsb之前就行它是用于清除方向标志让数据的源地址和目的地址逐渐增大。 由于外层函数也要用ecx做为遍历段的循环计数所以您明白了这里的第230行为什么要将ecx入栈备份啦这样在ecx用完之后在mem_cpy执行结束前通过pop指令将ecx和ebp恢复以便外层遍历段的循环中保持ecx正确。 在第231~233行为复制工作所需要的条件初始化esi和edi指向了要复制的段的来源地址和目的地址ecx是为rep指令做准备的指定了调用movsb指令的次数。在此提醒一下段寄存器DS和ES在进入保护模式之初就被赋成相同的选择子了它们都指向同一个段描述符故它们在此工作正确请大伙儿放心。 一切就绪之后在第234行rep movsb这三剑客团队就开始合作啦。 mem_cpy返回后程序流程回到第216行这是清理在调用mem_cpy之前在栈中压入的sizesrcdst这三个参数共占3*412字节所以将esp加上12于是栈顶跨过了它们这三个参数所占的空间可被其它压栈操作覆盖。 每个函数中都要有个返回指令这里用的是ret指令以后我们还会接触到其它返回指令。之前在用call指令调用函数时无论是调用kernel_init还是mem_cpycpu都会将函数的返回地址压入栈中保存这是为函数体中的ret指令准备的换句话说函数不会自己返回是通过ret来返回的。ret指令将栈顶中的值做为返回地址所以一定要确保在调用ret时位于栈顶处的数据是正确的返回地址。一般情况下我们在函数体中保证push操作和pop操作配套成对正如在mem_cpy的实现中有两个push入栈操作在函数返回前就要有两个pop出栈操作。 咱们的函数中用的都是ret近返回指令所以只会在栈顶弹出4字节的数据做为代码段的偏移地址为EIP寄存器赋值从而恢复了程序执行流. 【再续】
http://www.pierceye.com/news/206771/

相关文章:

  • 什么是网站功能需求wap网页文字游戏
  • 网站开发者模式怎么保存网站建设3d插件
  • 域名备案网站要不要关景县有专业做网站人员吗
  • 门户网站建设方案ppt公司网站建设全包
  • 网站建站的流程网站建设服务那家好
  • 湖南平台网站建设制作企业网站关联优化
  • 优秀网站设计作品大连seo外包
  • 共享空间网站开发公司做网站 最好的开源cms
  • 免费图片素材网seo wordpress主题
  • ipad可以做网站推广吗wordpress主题中文
  • 自己做网站要会什么软件下载wordpress 小工具代码
  • 视频拍摄及制作培训网站优化有什么用
  • 沈阳网站排名公司网站开发专业怎么样
  • 电影院网站建设方案网络维护是什么职业
  • 网站建设需要的公司wordpress考试主题
  • 企业网站管理系统多站多语言版电子书推送网站怎么做
  • 海洋公司做网站推广安阳网站如何做优化
  • 南昌网站开发公司哪家公司好网站建设接单
  • 宁波网站制作哪家强调用wordpress的文章编辑器
  • 在线制作手机网站公司网站建设厂家
  • 在线分析网站一个小外贸公司怎么开
  • 给自己的公司做网站怎么做好电脑手机一体网站
  • 精通网站建设 全能建站密码pdf电商网站设计理念
  • 百度推广建设网站是不是合发手机网站的必要性
  • 企业网站建设是什么实现的物质基础和技术支撑现货交易平台代理
  • 网站建设的描述长沙发布app
  • 好的设计作品网站代理网站建设
  • 做网站的软件m开头网站建设公司问候语
  • 做网站需要工商证吗app软件开发价格
  • 做足球原创短视频网站网站建设永远在路上