如何在程序集中创建计时器或计数器?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在程序集中创建计时器或计数器?相关的知识,希望对你有一定的参考价值。

我在想计算机通过使用CMOS电池来节省时间。它通过计算电池产生的每秒脉冲数来保持时间,一个计数器。

我的困惑是如何在python中运行时间的模块,或者任何其他带有计时器的应用程序。我假设它必须直接访问,或间接访问操作系统内置的较低级别模块,即;用汇编写的?如果是这种情况,有人可以了解汇编代码如何更新寄存器而无法检查每x个时间。当然,计算机必须检查寄存器是否已经改变,这需要时间保持定期检查?

答案

汇编与这个或任何其他语言有什么关系?

有一个RTC,实时时钟,电池支持。这可以节省计算机“关闭”的时间。所谓的CMOS(Bios等)是一个电池备份的RAM,它可以在计算机“关闭”时保持您的设置以及计算机引导加载程序。它只是从RTC读取时间。

有一个定时器,您可以设置/更改并以某个间隔启用中断,历史上已设置并且中断以某种速率发生,并导致使用它来保持时间的可能性。 X每秒的滴答数/小时/天/年。一旦虚拟机发挥作用,这是一个非常糟糕的时间来源,因为您可能已经注意到时间会急剧变化。

在主处理器上运行的所有软件,无论是“bios”软件,操作系统,......归结为机器代码,大多数编译器首先生成组件然后组装,因为这是理智的方式。如果您在x86上运行裸机(如果此计时器仍然存在,或者现在也可能存在其他更好的计时器),则可以设置中断处理程序来处理来自计时器的周期性中断。由于您是裸金属,您可以选择中断率和您的纪元时间(只需读取RTC),然后计算滴答。如果你没有正确的优先级设置,那么你可能会错过一个或一些,并开始失去时间跟踪。汇编自然是“最简单的”,因为你没有语言问题阻碍设置和命中处理程序,但仍然可以用其他语言解决。

虽然不像JAVA等那样硬性规则的Python编译成虚拟机“指令集”,然后有一个针对实际指令集的解释器。并不意味着你不能在理论上和可能在实践中将这些编译到目标。计时器与此无关,这些语言是否允许,是否设置为使用裸机并处理中断?是否设计了钩子,用于基于中断的回调到这种语言的函数?这些都与python中的time函数无关,你只需要让vm向os询问当前时间以及该函数/特性的工作时间。

您希望在应用程序中获得进行操作系统调用的时间。操作系统可以使用该“系统”上可用的任何资源。无论是内置于处理器中的计时器(例如参见Peter的评论),还是所有主板(/芯片)上的外围设备,或两者兼有,都可能有理由使用不同的设备(不关心挂钟时间需要时间)最后一次通话,某些单位的持续时间,与挂钟时间相比。从x86系统转移到ARM系统到MIPS系统等,你不会找到相同的时间源,但这并不意味着操作系统无法保持时间,持续时间和挂钟。

以上是关于如何在程序集中创建计时器或计数器?的主要内容,如果未能解决你的问题,请参考以下文章

我如何创建一个可以倒计时到给定时间和日期的计数器?

51单片机:定时器/计数器TMOD设定

如何快速进行倒计时或倒计时?

php 改变商店循环功能的动作钩位置并在Finale倒数计时器或计数器栏中挂钩

如何设置下载数据的时间限制(来自json数据库)Swift 2

如何配置STM32定时器在每次递增/递减时触发中断?