Chinaunix首页 | 论坛 | 博客
  • 博客访问: 469866
  • 博文数量: 164
  • 博客积分: 4024
  • 博客等级: 上校
  • 技术积分: 1580
  • 用 户 组: 普通用户
  • 注册时间: 2009-10-10 16:27
文章分类

全部博文(164)

文章存档

2011年(1)

2010年(108)

2009年(55)

我的朋友

分类:

2010-06-30 09:39:48

005CF969  |.  8BF8          mov     edi, eax
 
第一列就是指令的物理地址,由程序每次装入的不同而可能不同,若在不同机器上大多时候是不相同的,就是在内存中的地址,也就是所谓的"地址编号",可以这样理解的.
第二列就是指令字,也就是说二进制才是机器所认识的编码的,由于其计数较难,用十六进制表示,这个十六进行就是说机器码的.比如51就是将ECX入栈.等等,机器码是比较难记的,且一个指令可能有几个码来表示,就比如add指令,如果是加寄存器是一个指令,加内存又是一个指令,这时才出现了一种助记符,也就是所谓的汇编,比如将所有的加的功能都算作是add这个助记符,再根据指令泽成机器码.第三列你就明白了,就是反汇编出来的汇编语句,比如push ecx就是将ECX进栈,这个指令机器码都是根据CPU的不同而不太相同,所以一个类型的CPU都有自己支持的指令,而所有的指令的集合就叫做"集",比如我们常用的"X86指令集",用这个指令集所写的程序显然可以正常运行在X86构造的CPU系统上的.而CPU发展中一般是对以前的指令集的一个扩展而已,所以以后的型号的CPU也有可能支持的,但如果是不CPU指令集肯定是不行的.比如INTEL X86写出的程序工作在AMD上是不行的,所以如果软件支持很多平台时,要有不同的处理的!
地址是一般是顺序存放的,地址差就是指令字的长度,比如51就是一位长,而8BCF就是二位长,都是可以进行段内转移的!
阅读(2304) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~