分支机操作码是什么意思(X86体系结构)?

侯赛因·阿尔哈伊·艾哈迈德(Husin Alhaj ahmade)

我有一个简单的C代码,该代码经过编译,然后使用objdump实用程序提取了文本代码这是转储文件(一个转储文件):

0804841b <main>:
 804841b:   8d 4c 24 04             lea    0x4(%esp),%ecx
 804841f:   83 e4 f0                and    $0xfffffff0,%esp
 8048422:   ff 71 fc                pushl  -0x4(%ecx)
 8048425:   55                      push   %ebp
 8048426:   89 e5                   mov    %esp,%ebp
 8048428:   51                      push   %ecx
 8048429:   83 ec 14                sub    $0x14,%esp
 804842c:   c7 45 f0 00 00 00 00    movl   $0x0,-0x10(%ebp)
 8048433:   c7 45 f4 0a 00 00 00    movl   $0xa,-0xc(%ebp)
 804843a:   8b 45 f4                mov    -0xc(%ebp),%eax
 804843d:   01 45 f0                add    %eax,-0x10(%ebp)
 8048440:   8b 45 f0                mov    -0x10(%ebp),%eax
 8048443:   3b 45 f4                cmp    -0xc(%ebp),%eax

 8048446:   7e 0f                   jle    8048457 <main+0x3c>

 8048448:   83 ec 0c                sub    $0xc,%esp
 804844b:   6a 78                   push   $0x78
 804844d:   e8 be fe ff ff          call   8048310 <putchar@plt>
 8048452:   83 c4 10                add    $0x10,%esp
 8048455:   eb 15                   jmp    804846c <main+0x51>
 8048457:   8b 45 f4                mov    -0xc(%ebp),%eax
 804845a:   3b 45 f0                cmp    -0x10(%ebp),%eax
 804845d:   7e 0d                   jle    804846c <main+0x51>

地址8048446的指令jle 8048457 <main+0x3c>具有机器代码的7e 0f

<main+0x3c>语句是指目标指令从主地址移出的位置,即3c等于60,这意味着从主地址移出60个字节后,该指令

8048457:   8b 45 f4                mov    -0xc(%ebp),%eax

位于。地址8048446指令7e 0f
的机器代码7e,是jle的机器代码。0f是什么?

在另一个这样的分支指令中:

 8048455:   eb 15                   jmp    804846c <main+0x51>

15是什么意思?

瑞·里贝罗(Rui F Ribeiro)

英特尔CPU架构中存在绝对跳转/代码分支和相对跳转。

您显示给我们的是相对操作数操作码跳转。从历史上看,它们一直用于节省代码大小。

当您询问0f是什么时,这意味着在当前正在执行的指令+ 0f的末尾跳转当前PC 因此8048448 + 0f = 8048457,因此显示了程序清单jle 8048457(jle表示低于或等于则跳转)

同样,8048457 + 15 = 804846c,因此 jmp 804846c

请注意,所有值和数学均以十六进制表示。

另外,请注意,相对跳转操作码的操作数通常是带符号的。虽然在这两个示例中它们只是向前跳,但它们也可以跳转到先前的位置。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在x86汇编GAS语法中,冒号:是什么意思,如%ds:(%bx)?

来自分类Dev

x86 JMP操作码结构

来自分类Dev

在x86中是什么意思?

来自分类Dev

x86和x64体系结构的汇编语言之间有什么区别?

来自分类Dev

x86是什么意思?

来自分类Dev

JPEG的基准体系结构是什么?

来自分类Dev

处理器体系结构问题(x86与任何CPU)

来自分类Dev

为什么x86体系结构使用两个堆栈寄存器(esp; ebp)?

来自分类Dev

如何解释x86操作码映射?

来自分类Dev

如何使用Ansible为Java安装x86体系结构

来自分类Dev

C ++中“体系结构x86_64的未定义符号:”错误的原因是什么?

来自分类Dev

“指令前缀”在现代x86中是什么意思

来自分类Dev

x86指令编码如何选择操作码

来自分类Dev

x86操作码是任意的吗?

来自分类Dev

“与软件应用程序的目的特别相关的体系结构”是什么意思?

来自分类Dev

如何在x86体系结构上从C调用汇编函数?

来自分类Dev

X86体系结构-将向量大小设置为unsigned long long

来自分类Dev

[-] [-]在Intel x86 Assembly文档中是什么意思?

来自分类Dev

用于x86 / x64体系结构的SQLite dll

来自分类Dev

x86 / x64体系结构可以抵抗不安全的发布吗?

来自分类Dev

Windows是否支持x86以外的任何硬件体系结构?

来自分类Dev

在x86中是什么意思?

来自分类Dev

x86体系结构中的指令解码

来自分类Dev

在X86机器上生成MIPS体系结构汇编代码

来自分类Dev

C ++中的“体系结构x86_64的未定义符号:”错误的原因是什么?

来自分类Dev

如何从已编译的代码更改x86操作码

来自分类Dev

在C语言中,“体系结构x86_64的未定义符号:”是什么意思?

来自分类Dev

换行无法使用nasm正确执行x86体系结构

来自分类Dev

addr 在操作码 0x3a LDA addr intel 8080 中是什么意思

Related 相关文章

  1. 1

    在x86汇编GAS语法中,冒号:是什么意思,如%ds:(%bx)?

  2. 2

    x86 JMP操作码结构

  3. 3

    在x86中是什么意思?

  4. 4

    x86和x64体系结构的汇编语言之间有什么区别?

  5. 5

    x86是什么意思?

  6. 6

    JPEG的基准体系结构是什么?

  7. 7

    处理器体系结构问题(x86与任何CPU)

  8. 8

    为什么x86体系结构使用两个堆栈寄存器(esp; ebp)?

  9. 9

    如何解释x86操作码映射?

  10. 10

    如何使用Ansible为Java安装x86体系结构

  11. 11

    C ++中“体系结构x86_64的未定义符号:”错误的原因是什么?

  12. 12

    “指令前缀”在现代x86中是什么意思

  13. 13

    x86指令编码如何选择操作码

  14. 14

    x86操作码是任意的吗?

  15. 15

    “与软件应用程序的目的特别相关的体系结构”是什么意思?

  16. 16

    如何在x86体系结构上从C调用汇编函数?

  17. 17

    X86体系结构-将向量大小设置为unsigned long long

  18. 18

    [-] [-]在Intel x86 Assembly文档中是什么意思?

  19. 19

    用于x86 / x64体系结构的SQLite dll

  20. 20

    x86 / x64体系结构可以抵抗不安全的发布吗?

  21. 21

    Windows是否支持x86以外的任何硬件体系结构?

  22. 22

    在x86中是什么意思?

  23. 23

    x86体系结构中的指令解码

  24. 24

    在X86机器上生成MIPS体系结构汇编代码

  25. 25

    C ++中的“体系结构x86_64的未定义符号:”错误的原因是什么?

  26. 26

    如何从已编译的代码更改x86操作码

  27. 27

    在C语言中,“体系结构x86_64的未定义符号:”是什么意思?

  28. 28

    换行无法使用nasm正确执行x86体系结构

  29. 29

    addr 在操作码 0x3a LDA addr intel 8080 中是什么意思

热门标签

归档