gpt4 book ai didi

assembly - 这个功能需要多长时间?

转载 作者:行者123 更新时间:2023-12-04 08:56:24 24 4
gpt4 key购买 nike

我想弄清楚这个汇编函数在 Atmel ATmega162 上需要多长时间。原始代码注释和命名建议它应该产生 10 µs 的延迟,但我对此表示怀疑。不幸的是,我对汇编代码缺乏经验,所以我不确定我的假设是否正确。
这是代码:

Timer_Loop_10us:

push Counter

ldi Counter,5
timer_wait10us:
nop
dec Counter
tst Counter
brne timer_wait10us

pop Counter
ret
根据 ATmega 规范,ldi、nop、dec 和 tst 占用 1 个时钟周期。 push 和 pop 需要 2 个周期,ret 需要 4 个周期,brne 需要 1 或 2 个周期。我想如果 Counter = 0 需要 1 个周期,如果 Counter != 0 需要 2 个周期,因为必须跳回标签,但我不确定这一点。
所以如果我是对的,整个函数需要 33 个时钟周期。 ATmega162 的 CPU 速度为 16 MHz,这意味着该功能只会产生 2 µs 的延迟,而不是 10 µs。
我是对的还是我在这里错过了什么?

最佳答案

感谢 Martin Rosenau 的评论,我想我已经理解了这个问题。
实际上,我的设备上的时钟频率不是 16 MHz,而是 3.6864 MHz。并且还需要考虑调用函数。和return函数一样,需要4个周期才能执行。所以我们没有 33 个,而是 37 个时钟周期,速度为 3.6864 MHz,这恰好为操作产生了 10 µs。
谢谢您的帮助!

关于assembly - 这个功能需要多长时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63807642/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com