PC值=当前程序执行位置+8

2023-11-05

本文转载至:http://blog.csdn.net/atower_boy/article/details/6291081

ARM处理器使用流水线来增加处理器指令流的速度,这样可使几个操作同时进行,并使处理与存储器系统之间的操作更加流畅,连续,能提供0.9MIPS/MHZ的指令执行速度。 PC代表程序计数器,流水线使用三个阶段,因此指令分为三个阶段执行:

1.取指(从存储器装载一条指令);

2.译码(识别将要被执行的指令);

3.执行(处理指令并将结果写回寄存器)。

 

 

而R15(PC)总是指向“正在取指”的指令,而不是指向“正在执行”的指令或正在“译码”的指令。一般来说,人们习惯性约定将“正在执行的指令作为参考点”,称之为当前第一条指令,因此PC总是指向第三条指令。当ARM状态时,每条指令为4字节长,所以PC始终指向该指令地址加8字节的地址,即:PC值=当前程序执行位置+8;

 

           周期1              周期2            周期3           周期4            周期5            周期6

PC-8    取指                译码              执行

PC-4                          取指              译码             执行

PC                                                 取指             译码              执行


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PC值=当前程序执行位置+8 的相关文章

  • 分析常见数据结构在内存中的存储形式

    本文会在x64dbg中分析vector list map的内存存储特点 目录 分析vector在内存中的存储形式 x32dbg分析vector数组 总结一下vector的内存布局 分析 list 在内存中的存储形式 x32dbg分析 lis
  • 使用Clang作为编译器 —— Assembling a Complete Toolchain

    装配一个完整的工具链 1 介绍 2 工具 2 1 Clang 前端 2 2 其他语言的语言前端 2 3 汇编器 2 4 链接器 3 运行时库 3 1 编译器运行时 Compiler runtime 3 2 原子库 Atomics libra
  • 计算机组成原理课程设计:运算器、微程序控制器、两个数大小比较

    实验一 运算器 实验二 微程序控制器 实验三 两个数比较大小 机器程序如下 P 00 20 IN R0 P 01 00 P 02 21 IN R1 P 03 00 P 04 84 SUB R0 R1 P 05 F0 BZC P 06 0C
  • 上例中便是调用GetSystemMenu函数的

    有如下问题请教各位 1 为什么程序在调用window api或者dll中的输出函数时用的形式是 00401375 FF1514324000 Call dword ptr 004
  • 逻辑左移、逻辑右移、算术左移、算术右移、循环左移、循环右移的学习

    逻辑左移时 最高位丢失 最低位补0 逻辑右移时 最高位补0 最低位丢失 算术左移时 依次左移一位 尾部补0 最高的符号位保持不变 算术右移时 依次右移一位 尾部丢失 符号位右移后 原位置上复制一个符号位 循环左移时 将最高位重新放置最低位
  • X64处理器架构

    X64处理器架构 翻译的windbg帮助文档 X64处理器架构 X64 架构是一个向后兼容的扩展的 x86 提供了和 x86 相同的 32 位模式和一个新的 64 位模式 术语 x64 包括 AMD 64 和 Intel64 他们的指令集基
  • xorl %eax, %eax

    这是GNU的汇编 xorl eax eax 这句起什么作用 按位异或 相同的位置为0 不同的位置为1 eax和eax的每一位都相同 所以相当于清零 movl 8 ebp ecx testl ecx ecx 这句起什么作用 jle L3 8
  • 汇编符号语言

    CSDN话题挑战赛第1期 活动详情地址 第1期话题PK赛 参赛话题 汇编知识分享 话题描述 我们的计算机知识就像一座金字塔 底层是数学 上面是数字电路 然后是汇编 再往上是操作系统 网络 数据库 高级编程语言 框架等等 我们不可能精通这个金
  • windgb调试

    reference http hi baidu com lewutian blog item 191047882b9c399fa5c27261 html 调试前的必备工作 在开始调试前首先要做的工作是设置好符号 Symbols 路径 没有符
  • arm汇编指令详细整理及实例详解

    目录 一 简介 二 ARM 汇编指令说明 2 1 32位数据操作指令 2 2 32位存储器数据传送指令 2 3 32位转移指令 2 4 其它32位指令 三 实例讲解 3 1 MRS 3 2 MSR 3 3 PRIMASK 3 4 FAULT
  • ARM中的程序状态寄存器(CPSR)

    31 30 29 28 27 8 7 6 5 4 3 2 1 0 N Z C V 保留 I F T M4 M3 M2 M1 M0 N Negative Less Than I IRQ disable Z Zero F FIQ disable
  • 汇编——寄存器的分类和功能

    在汇编中 个人感觉最重要的部分其实就是寄存器了 这次我们了解一下寄存器的分类和功能 先说一下寄存器是什么吧 其实就是一部分的空间 我们可以使用这些空间来存储内容 寄存器的空间都是16位的 80x86中 后来有增长 也就是1个字的空间 堆栈则
  • Base64编码(汇编版,未做过多优化,性能自认为还可以)

    感谢 DelphiGuy 于 2010 10 08 17 27 37 给出的提醒 function GetSizeCoder3To4 InputCount Integer Integer inline begin Result InputC
  • Linux下C编译系统

    Linux下C编译系统 编译过程概述 了解一些编译知识的读者都知道 所谓编译 就是在编译程序读取源程序 字符流 对之进行词法和语法的分析 将高级语言指令转换为功能等效的汇编代码 再由汇编程序转换为机器语言 并且按照操作系统对可执行文件感谢格
  • 汇编语言(王爽第三版) 实验5编写、调试具体多个段的程序

    参考 http blog sina com cn s blog 171daf8e00102xclx html 汇编语言实验答案 王爽 https wenku baidu com view a1cd7c6c1fb91a37f111f18583
  • 机器语言->汇编语言->高级语言

    在硬件层面来看 计算机的运行就是高底电压的变化 这种高低电压的变化在早期是通过开关或插拔电线来控制的 计算机中用0和1来表示低电压和高电压 这些0和1的序列就可以控制计算机CPU进行各种动作 一组一组的0 1序列就是一个一个的指令 这些指令
  • ads+jlink和keil+jlink调试环境配置

    ads1 2 and jlinkv8 1 安装ads1 2和jlink驱动Setup JLinkARM V408i exe 安装ads1 2时 最后在100 时如果持续时间长 耐心等一下吧 没有等待而点了cancel 则之后就不好重装了 解
  • 8086乘法指令MUL,IMUL

    对于加减指令来说CPU对有符号加减和无符号加减一视同仁 根据我们需要把它作为有符号的结果还是无符号的结果 但是乘除法指令区分有符号乘除和无符号乘除指令 无符号数乘法指令MUL MULtiply MUL OPRD OPRD可以用除立即数以外的
  • 《深入理解计算机系统》实验四Architecture Lab

    前言 深入理解计算机系统 实验四Architecture Lab下载和官方文档机翻请看 深入理解计算机系统 实验四Architecture Lab下载和官方文档机翻 我觉得这个文档对整个实验很有帮助 如果你的Y86 64环境还没安装好可以看
  • DOSBOX 快捷键及 MS-DOS 命令

    1 全屏 退出全屏 alt enter 2 释放鼠标 ctrl F10 3 exit 退出DOSBOX 4 dir 显示目录内容 可选参数 w 只显示文件名 P 显示部分内容 exe 筛选出可执行文件 5 cd 进入目录 cd 退回上一级目

随机推荐