我正在参加系统架构课程,我无法理解直接映射缓存的工作原理.
我看了几个地方,他们用不同的方式解释它让我更加困惑.
我无法理解的是标签和索引是什么,它们是如何被选中的?
从我的演讲的解释是:"地址划分是分为两名部分的索引用于寻址(32K)的RAM地址直接的休息时,标签被存储,并与输入标签进行比较(例如,15个比特)."
那个标签来自哪里?它不能是RAM中内存位置的完整地址,因为它使直接映射缓存无用(与完全关联缓存相比).
非常感谢你.
我想知道在基于 ARM 的微控制器上编写 SVC 调用的正确方法。
到目前为止,我的理解是 ARM 有一个异常向量表,这意味着任何程序中的第一条指令都必须分支到适当的处理程序:
RESET ;Handles reset
UNDEFINED ;Undefined instructions
SVC BL SVC_Entry
PRE_ABORT ;Prefetch abort
DAT_ABORT ;Data abort
Run Code Online (Sandbox Code Playgroud)
然后,每次运行 SVC 指令时,模式都会切换到主管,SVC 提供的数字存储在 R0 中,程序将分支到适当的处理程序:
;== Handling SVC calls ========================================================
Max_SVC EQU 1
SVC_Entry CMP R0, #Max_SVC ;Check upper limit
BHI SVC_end ;Does nothing if unknown
ADD R0, PC, R0, LSL #2 ;Calculate table address
LDR PC, [R0, #0]
Jump_table DEFW SVC_0 ;Halt
DEFW SVC_1 ;Print string
;== SVC calls ================================================================
SVC_1 B SVC_end
SVC_end MOVS …Run Code Online (Sandbox Code Playgroud)