尝试每秒计算rPi指令

时间:2018-12-15 19:31:51

标签: assembly raspberry-pi instructions

在我正在参加的在线课程中,我的任务是尝试通过以下代码闪烁LED来确定Raspberry Pi每秒执行的指令量。 在我的评估中,由于我们有两个延迟内部循环,因此单个外部循环迭代了16,616,072次(是0x7e0000的两倍)。我使用一个计时器来估计单个外部循环(单个LED闪烁周期)需要1.55秒。这时,RPI执行与迭代次数几乎相同的指令(非内部循环指令的数量微不足道)。因此,每秒16,616,072 / 1.55 = 10,654,885条指令。

我将subs r2, #1视为正在执行的主要指令。我没有算bne wait1。那被认为是指令吗?

我每秒准确地估计指令吗?

.equ DELAY, 0x7e0000

// configure GPIO 20 for output
ldr r0, FSEL2
mov r1, #1
str r1, [r0]

// set bit 20
mov r1, #(1<<20)

loop: 

// set GPIO 20 high
ldr r0, SET0
str r1, [r0] 

// delay
mov r2, #DELAY
wait1:
    subs r2, #1
    bne wait1

// set GPIO 20 low
ldr r0, CLR0
str r1, [r0] 

// delay
mov r2, #DELAY
wait2:
    subs r2, #1
    bne wait2

b loop

FSEL0: .word 0x20200000
FSEL1: .word 0x20200004
FSEL2: .word 0x20200008
SET0:  .word 0x2020001C
SET1:  .word 0x20200020
CLR0:  .word 0x20200028
CLR1:  .word 0x2020002C

0 个答案:

没有答案