返回中断处理程序后程序计数器去了哪里?

2024-06-25

您好,我想知道当程序从中断服务程序返回时程序计数器去哪里?我知道当中断事件发生时PC被压入堆栈。但是下一个或同一个(刚刚执行的一个)被压入堆栈的地址是什么?当我们有

first instruction;
interrupt event here;
go inside the ISR;
exit ISR;
second instruction;

OR

first instruction;
interrupt event here;
go inside the ISR
exit ISR;
first instruction;

我的意思是,PC 是指向 ISR 入口之前执行的指令,还是指向下一条指令(从 ISR 返回后)? 我希望你能明白。


由于只有在 CPU 处于精确的固定状态时才能处理中断,因此如果在指令中间引发中断,则在指令执行后将跳转到中断向量程序。

因此,当从中断过程返回时,PC 将指向第一条指令之后的指令。

first instruction fetch (PC is updated meanwhile)
first instruction decode
interrupt is raised
first instruction execution
** now and only now the CPU checks for a possible interrupt **
interrupt is present, pushing PC on stack and other things
jump to interrupt address
execution of interrupt
return from interrupt (pop of PC and other things)
second instruction fetch 
...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

返回中断处理程序后程序计数器去了哪里? 的相关文章

随机推荐

  • Angular 4 Subscribe方法多次调用

    我正在创建一个全局模态组件 我的问题是 当我调用 subscribe 方法时 它会根据调用的模态数量多次调用 如何防止对可观察订阅方法的多次调用 请检查下面我的代码 提前致谢 模态 model ts export class Modal t
  • 将 nvarchar 值转换为数据类型 int 时转换失败

    我创建了下面列出的过程 CREATE procedure getdata ID int frm varchar 250 to varchar 250 AS BEGIN DECLARE SQL nvarchar 500 set SQL sel
  • 如何在 Perl 中获取用户输入而不等待输入?

    我正在尝试用 Perl 制作一个交互式 shell 脚本 我能找到的唯一用户输入如下 name
  • 如何将动态链接的应用程序转换为静态链接的应用程序?

    我有一个应用程序 例如 gedit 它是动态链接的 但我没有源代码 所以我不能按我喜欢的方式编译它 我想要做的是将其静态链接并将其移动到没有运行该应用程序所需的库的系统 那么是否可以做到以及如何做到呢 理论上是可能的 您基本上必须执行与动态
  • VS2005:程序集“<程序集>”被错误地指定为文件。

    我已将对 log4net 程序集 dll 的引用添加到我的项目中 当我构建时 我收到一条警告 警告程序集 Lib log4net dll 是 错误地指定为文件 我查了一下MSDN 上有关此错误的帮助 http msdn microsoft
  • 为什么 `pandas.read_csv` 不是 `pandas.DataFrame.to_csv` 的倒数?

    我觉得很奇怪pandas read csv不是直接倒数函数df to csv 在此图中 请注意在使用所有默认设置时 原始 DataFrame 和最终 DataFrame 之间的 未命名 列有何不同 In 1 import pandas as
  • 根据连续行值差异拆分数据框

    我有一个这样的数据框 df col1 col2 col3 1 2 3 2 5 6 7 8 9 10 11 12 11 12 13 13 14 15 14 15 16 现在我想当两个连续行的 col1 差异大于 1 时从上面创建多个数据框 所
  • 为什么日元 (U+00A5) 符号的 Android Shift-JIS 编码会产生 -4,-4 ?

    运行以下代码似乎会生成错误的值 byte data u00a5 getBytes Shift JIS 它产生 4 4 但我期望 0x5c 我尝试了各种替代名称 Shift JIS shift jis cp932 并且都产生相同的结果 当我将
  • 通过.NET/C#发送传真

    如何在 NET 中发送传真 我们有一个传真服务器 我们需要通过它将文件传真给客户 由于我们有传真服务器 我不认为我必须在我的机器上配置传真调制解调器 对吧 它只会通过传真服务器吗 有没有好的免费 或便宜 传真 API 在我的研究中 我遇到过
  • 为什么上传文件时出现错误[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 error True apiversion 35 errorCode api error job upload invalid messag
  • 使用 JLabel 修复 JScrollPane

    为了添加背景图像 我使用 JLabels 而不是 JPanel JFrame frame new JFrame frame setDefaultCloseOperation JFrame EXIT ON CLOSE JLabel label
  • 如何从动态查询中插入具有多列的表?

    如同上一个问题 https stackoverflow com questions 34194889 how to insert into table from dynamic query对于一对一映射 我需要一个针对源和目标中的多个列的解
  • Java - Jena API - 输出文件

    我正在使用 Java 和 Jena API 我有课Person与数据类型属性hasFirstName hasLastName hasDateOfBirth hasGender 以下是我的 RDF 文件中一个人的表示方式
  • 应用程序网关前面的 Azure 前门

    我已在应用程序网关的前面部署了 Azure Front Door 现在 我想通过 Front Door 路由所有流量 并限制对应用程序网关的公共 IP 地址的直接访问 怎么做 这就是我想做的 https i stack imgur com
  • 为每个轮询获取特定的记录集,而不在骆驼中设置标志

    我需要从数据库中选取所有消息并将其发送以进行重新处理 我的主要要求是 我应该为每个轮询只获取一定数量的记录 而不是所有记录 下一次民意调查应该让我得到下一组记录并将其设置为进行处理 我不应该在表中使用processedFlag 列 这是不允
  • 为什么 calc 在用于 font-size 时不重新计算?

    我尝试将 VW 和 calc 一起使用并且有效 但只计算一次 加载时间 http codepen io anon pen mJOGbr http codepen io anon pen mJOGbr html font size calc
  • 在引导下拉元素上使用 intro.js

    我不知道如何在下拉元素上使用 intro js 我发现了一个类似的问题 但没有答案 IntroJS Bootstrap 菜单不起作用 https stackoverflow com questions 20071122 introjs bo
  • 在 Tensorflow 中实现对比损失和三元组损失

    我两天前开始玩 TensorFlow 我想知道是否有三元组和对比损失的实现 我一直在看文档 https www tensorflow org versions r0 9 api docs python nn html losses 但我还没
  • 字体在 IE 10 中不起作用

    我完全没有成功让 IE 10 显示自定义字体 还有其他人解决这个问题吗 我可以在网上看到一些人在 IE 10 中使用字体时遇到问题 但没有找到解决方案或已确认的错误 有人有相同的经历或解决方案吗 这就是我现在所拥有的 它在 10 之前的 I
  • 返回中断处理程序后程序计数器去了哪里?

    您好 我想知道当程序从中断服务程序返回时程序计数器去哪里 我知道当中断事件发生时PC被压入堆栈 但是下一个或同一个 刚刚执行的一个 被压入堆栈的地址是什么 当我们有 first instruction interrupt event her