当前位置:首页 » 操作系统 » pc加拿大夜场算法

pc加拿大夜场算法

发布时间: 2022-05-12 00:37:41

1. 加拿大pc算法教程

1.三级流水线:其实对于PC = PC +8这个问题很简单,这两个PC其实代表着不同的意义,第一个PC是对于CPU而言,而第二个PC而言是我们通过编译器看到的PC(PC指向程序正在运行的那一条指令),但是对于CPU的PC是永远指向取指那个步,故PC = PC +8。

2.五级流水线; ARM9流水线包括取指(fetch)、译码(decode)、执行(excute)、缓冲/数据(buffer/data)、回写(write-back)寄存器堆。ARM9流水线在译码阶段已经开始读取操作数寄存器,因此译码阶段的PC值和取指阶段的PC值关系为:PC(decode)=PC(fetch)+4。因此执行阶段的PC值和译码阶段的PC值关系为:PC(excute)=PC(decode)+4。

3.对于软中断函数的返回时的PC:如下

ARM Thumb

SWI PC-8 PC-4

xxx 》 PC -4 PC-2 (异常返回将执行这条指令)

yyy PC PC

因此返回指令为: MOV PC , LR

原因:异常是由指令本身引起的,因此内核在计算LR时的PC值并没有被更新。对于ARM状态,因为SWI指令表示将跳到异常处理函数,此时SWI这条指令的PC = PC -8,当进入异常处理函数之前,硬件会自动把PC-4保存到LR寄存器中,所以异常处理函数结束后直接MOV PC, LR就行,就会跳到xxx这一条指令去执行。对于Thumb状态同理。

4.对于IRQ和FIQ中断函数返回时的PC:

ARM Thumb

xxx PC-12 PC-6 (程序在运行这条代码时就产生了中断信号)

yyy 》 PC-8 PC-4 (异常返回将执行这条指令)

zzz PC-4 PC-2

www PC PC

返回指令为: SUBS PC, LR, #4

原因:异常在当前指令执行完成后才会被响应,因此内核在计算LR时的PC值已被更新。对于ARM状态,程序在执行xxx这条指令时,中断信号产生,但是由于中断必须在这一条指令执行完之后才会被响应,执行完后,则此时对于CPU的PC已经指向了www这条指令的取指,在中断函数函数时应该执行yyy这条指令,虽然硬件会把PC-4的值赋值给LR寄存器,但是这是指向zzz这条指令的,所以返回时应该SUBS PC, LR, #4。对于Thumb状态同理。

热点内容
access数据库实用教程 发布:2025-05-10 20:06:06 浏览:340
谷歌怎么收安卓专利 发布:2025-05-10 20:00:55 浏览:448
am27系列存储器 发布:2025-05-10 19:45:48 浏览:668
android支持的视频格式 发布:2025-05-10 19:45:09 浏览:494
模拟器安卓版哪个好用电脑玩 发布:2025-05-10 19:41:00 浏览:16
浪潮服务器配置bmc管理ip 发布:2025-05-10 19:26:31 浏览:469
儿童编程编 发布:2025-05-10 19:05:46 浏览:384
自己在电脑上怎么搭建服务器 发布:2025-05-10 19:05:11 浏览:426
冲锋车里面配置了什么 发布:2025-05-10 18:55:31 浏览:430
c语言typedef的用法 发布:2025-05-10 18:51:35 浏览:893