首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏Linux驱动

    38.Linux驱动调试-根据系统时钟定位出错位置

    因为它是由定时器中断产生的,每隔一定时间便会触发一次,所以当CPU一直在某个进程中时,我们便在中断函数中打印该进程的信息 1.先来回忆下 在之前的第5章内核中断运行过程:分析过,当内核中断产生时,会做以下几步: 1)pc )函数,添加如下内容: 1)判断irq若等于系统时钟的irq,然后cnt++ 2)若在10s后,获取的进程没有改变,便打印:进程名字、PID、(regs-> ARM_pc)-4 (PS: 为什么要打印PC 因为此时的PC是返回地址,而PC-4才是CPU运行的地址) 3.首先来找到系统时钟的中断号irq 输入#cat /proc/interrupt,如下图所示: 其中中断号来自 linux-2.6.22.6

    1.9K100发布于 2018-01-08
  • 来自专栏全栈程序员必看

    汇编指令B与BL_AB500编程中B指令使用

    在发生跳转前,将当前PC-4保存到R14中。 b reset ;跳入reset处理程序 bl label ;跳入label函数,同时将当前PC-4保存到R14中 版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。

    1K40编辑于 2022-11-03
  • 来自专栏全栈程序员必看

    vlan的原理和作用_生态因子作用的基本原理

    最后是:PC-2和PC-4都会接收到X帧。 原理七: 该图显示的是:PC-1向PC-4发送一个单播帧Y,而且所有的交换机的VLAN 2的MAC地址表中都存在关于PC-4的MAC地址的表项。 最后是PC-4收到该Y帧。 原理八: 该图显示的是:PC-1向PC-6发送一个单播帧Z。而所有的交换机的VLAN 2的MAC地址表中在正常的情况下是不存在关于PC-6的MAC地址的表项的。 结果:PC-2和PC-4都会接收到Z帧,但是PC-6无法收到Z帧,这是因为交换机阻断了PC-1和PC-6之间的二层交换。

    55530编辑于 2022-09-23
  • 来自专栏网络

    VLAN 基本配置

    实验内容 本实验模拟了一个简单的公司网络场景,SW1和SW2为楼层交换机,PC-1和PC-3属于公司的部门A,PC-2和PC-4属于公司的部门B,PC-5属于部门A和部门B的上级部门C。 255.0.0.0 N/A PC-2 Ethernet 0/0/1 10.0.2.2 255.0.0.0 N/A PC-3 Ethernet 0/0/1 10.0.1.3 255.0.0.0 N/A PC

    41610编辑于 2024-10-17
  • 来自专栏k8s快速入门

    C++对象模型_operator delete异常分析

    /*unsigned char *pC=(unsigned char*)pB; pC=pC-4; delete pC;//这样就可以释放new Derived分配的内存,而不会发生崩溃

    83220编辑于 2022-04-25
  • 来自专栏鸿蒙开发笔记

    OpenHarmony 内核源码分析(任务切换篇) | 看汇编如何切换任务

    , {LR}/*返回地址入栈,LR = PC-4 ,对应TaskContext->PC(R15寄存器)*/ STMFD SP!

    24600编辑于 2025-03-19
  • 来自专栏FreeBuf

    从IDA动态调试方法到ARM三级流水线的分析到实操

    字节长,所以PC始终指向改指令地址加8字节的地址,既:PC值=当前程序执行位置+8; ARM指令是三级流水线,取指、译指、执行是同时执行的,现在PC指向的是正在取值的地址,那么CPU正在译指的指令地址是PC

    2.4K20发布于 2021-10-11
  • 来自专栏鸿蒙开发笔记

    OpenHarmony 内核源码分析 (编码方式篇) | 机器指令是如何编码的?

    ITAdvance(); new_lr_value = if CPSR.T == '1' then PC-2 else PC-4; new_spsr_value = CPSR;

    33020编辑于 2025-04-03
  • 来自专栏鸿蒙开发笔记

    OpenHarmony 内核源码分析(中断切换篇) | 系统因中断活力四射

    SUB LR, LR, #4 在arm执行过程中一般分为取指,译码,执行阶段,而PC是指向取指,正在执行的指令为 PC-8 ,译码指令为PC-4.当中断发生时硬件自动执行 mov lr pc, 中间的PC

    29810编辑于 2025-03-19
  • 来自专栏Linux驱动

    5.分析内核中断运行过程,以及中断3大结构体:irq_desc、irq_chip、irqaction(详解)

    .long __irq_invalid @ f 从上面代码中的注释可以看出: 1).将发生异常前的各个寄存器值保存在SP栈里,若是中断异常,则PC=PC

    1.9K80发布于 2018-01-03
  • 来自专栏向治洪

    Android Native Hook

    是不是感觉有些复杂,其实这是为了引出 ARM 指令集的常用跳转方法: LDR PC, [PC, #-4] ;0xE51FF004 $TRAMPOLIN_ADDR 在了解了三级流水线以后,就不会对这个 PC

    1.6K20编辑于 2022-11-30
  • 来自专栏嵌入式与Linux那些事

    嵌入式软件工程师笔试面试指南-ARM体系与架构

    始终指向该指令地址加8字节的地址,即:PC值=当前程序执行位置+8; ARM指令是三级流水线,取指,译指,执行,同时执行的,现在PC指向的是正在取指的地址(下一条指令),那么cpu正在译指的指令地址是PC 当突然发生中断的时候,保存的是PC的地址(PC-8+4 = PC-4 下一条指令的地址) 这样你就知道了,如果返回的时候返回PC,那么中间就有一个指令没有执行,所以用SUB pc lr-irq #4。

    2K51发布于 2021-04-28
  • 来自专栏鸿蒙开发笔记

    OpenHarmony内核源码分析(任务调度篇) | 任务是内核调度的单元

    ) 为程序计数器,用于保存程序的执行地址,在ARM的三级流水线架构中,程序流水线包括取址、译码和执行三个阶段,PC指向的是当前取址的程序地址,所以32位ARM中,译码地址(正在解析还未执行的程序)为PC

    53020编辑于 2025-03-07
领券