小编Per*_*age的帖子

直接映射缓存如何工作?

我正在参加系统架构课程,我无法理解直接映射缓存的工作原理.

我看了几个地方,他们用不同的方式解释它让我更加困惑.

我无法理解的是标签和索引是什么,它们是如何被选中的?

从我的演讲的解释是:"地址划分是分为两名部分的索引用于寻址(32K)的RAM地址直接的休息时,标签被存储,并与输入标签进行比较(例如,15个比特)."

那个标签来自哪里?它不能是RAM中内存位置的完整地址,因为它使直接映射缓存无用(与完全关联缓存相比).

非常感谢你.

caching system cpu-architecture

47
推荐指数
2
解决办法
6万
查看次数

编写自己的 SVC 调用 ARM 程序集

我想知道在基于 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)

hardware microcontroller assembly arm

5
推荐指数
2
解决办法
8254
查看次数