存储器0x100和0x104是两个32位计数器.它们代表64位定时器并且不断递增.
如何正确读取两个内存地址并将时间存储为64位整数?
一个错误的解决方
x = High
y = Low
result = x << 32 + y
Run Code Online (Sandbox Code Playgroud)
(该程序可以换出,同时低溢出...)
附加要求:
仅使用C,无汇编
总线为32位,因此无法在一条指令中读取它们.
您的程序可以随时切换上下文.
没有可用的互斥锁或锁.
一些高级别的解释是可以的.代码没有必要.谢谢!
hob*_*bbs 21
我从David L. Mills那里学到了这一点,他将其归功于Leslie Lamport:
假设定时器本身自动更新,那么这可以保证工作 - 如果L在步骤1和2之间某处溢出,那么H将在步骤1和3之间递增,并且步骤4中的测试将失败.