图灵机
当系统中有一个CPU的时候 ,MR就是它的状态
当系统中有n个CPU的时候,MR1,MR2…MRn 是它的状态
IRQ和NMI是低电平有效信号
NMI不可屏蔽中断
6502的CPU一共40个引脚
eflags寄存器里的 IF 表示 interrupt enable
1表示可以响应中断,0表示关中断
如果IF=0,程序又处于死循环,
那么这个处理器就相当于从操作系统离线了。
中断处理程序所做的事情,只有跳转
处理器如何处理中断:允许软件把代码放到中断处理位置,处理器接收中断信号的时候会把PC跳转到中断处理位置。
RISC-V的中断处理
中断保存
32个寄存器,PC计数器
CPU状态(是一个寄存器)
指令的计数(每个周期+1)
时钟计数
中断相关寄存器
中断地址中断原因
cte_init 定义在中断发生的时候,执行什么函数
iset 设置开关中断(IF)
程序在保护状态执行的时候无法关中断,会被操作系统直接中断,产生异常
中断时:额外开辟一块内存,把寄存器存到内存里
64位所有通用寄存器,cr3寄存器,都存到内存里了
x86所有通用寄存器,cr3寄存器,都存到内存里了
特殊寄存器
rip 【指向代码】:rip寄存器是一个64位的寄存器,用来存储下一条要执行的指令的地址。它是在64位模式下才有的,相当于32位模式下的eip寄存器。rip寄存器可以实现一种新的寻址模式,叫做rip相对寻址,就是用rip加上一个偏移量来计算有效地址。
rsp【指向堆栈】:rsp寄存器是一个64位的寄存器,用来存储当前函数调用的栈栈顶的地址。它是在64位模式下才有的,相当于32位模式下的esp寄存器。rsp寄存器可以用来保存函数的局部变量、参数、返回地址等信息,方便函数的调用和返回。
rbx【指向内存地址】:rbx寄存器是一个64位的基址寄存器,一般用于访问内存的基址。它是被调用者保存的寄存器,也就是说在函数调用时,如果要使用它,必须先保存它的原始值,然后在函数返回时恢复它。
rbp【指向内存地址】rbp寄存器是一个64位的栈帧指针,用于标识当前栈帧的起始位置。栈帧是函数调用时在栈上分配的一块内存空间,用来保存函数的局部变量、参数、返回地址等信息。rbp寄存器可以通过偏移量来访问栈帧中的数据。它也是被调用者保存的寄存器。