免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 5092 | 回复: 3
打印 上一主题 下一主题

jmp 1的机器码是多少? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-03-25 12:23 |只看该作者 |倒序浏览
我觉得应该是 eb ff

但是在binutils 2.18中

  1. [root@mail ~/binutils-2.18/gas]# echo 'jmp 1'|as -v
  2. GNU assembler version 2.18 (i686-pc-linux-gnu) using BFD version (GNU Binutils) 2.18
  3. [root@mail ~/binutils-2.18/gas]# objdump -d a.out

  4. a.out:     file format elf32-i386

  5. Disassembly of section .text:

  6. 00000000 <.text>:
  7.    0:   e9 fd ff ff ff          jmp    0x2
  8. [root@mail ~/binutils-2.18/gas]#
复制代码
binutils 2.20中

  1. [root@ssq_pppoe ~]# echo 'jmp 1'|as -v
  2. GNU assembler version 2.20 (x86_64-unknown-linux-gnu) using BFD version (GNU Binutils) 2.20
  3. [root@ssq_pppoe ~]# objdump -d a.out  

  4. a.out:     file format elf64-x86-64


  5. Disassembly of section .text:

  6. 0000000000000000 <.text>:
  7.    0:   e9 00 00 00 00          jmpq   0x5
  8. [root@ssq_pppoe ~]#
复制代码
到底哪个是正确的?

论坛徽章:
2
摩羯座
日期:2013-10-10 14:29:04天蝎座
日期:2014-01-03 09:14:49
2 [报告]
发表于 2010-03-25 13:35 |只看该作者
file format elf32-i386

vs.

file format elf64-x86-64

论坛徽章:
0
3 [报告]
发表于 2010-03-25 20:33 |只看该作者
搞懂了
jmp 1中的1是绝对地址

因此应该使用
JMP rel32off      E9 cd                 Near jump with the target specified by a 32-bit signed displacement

至于cd值多少跟重定位方式有关

在32位系统上上是
Offset     Info    Type            Sym.Value  Sym. Name
00000024  00000002 R_386_PC32  

64位形体上是
Offset          Info           Type           Sym. Value    Sym. Name + Addend
000000000005  000000000002 R_X86_64_PC32                        fffffffffffffffd

论坛徽章:
0
4 [报告]
发表于 2010-03-25 21:52 |只看该作者
你看指令描述表是看不清本质的。

要了解本质,必须看 opcode 表


而且,你是混淆了 汇编语言机器语言


jmp 1  ---> 这是汇编语言层面

e9 00 00 00 00 ----> 这是机器语言层面
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP