以下是 C 中的示例代码。
unsigned int COUNTER;
unsigned int get_counter(void) {
COUNTER ++;
return COUNTER;
}
我使用可验证的 c (vst) 编写了它的功能规范,但在验证结束时我遇到了错误“typecheck_error (deref_byvalue tint)”。任何人都可以告诉我如何编写上述 c 函数的正确 founc 规范吗?关键是如何编写全局变量的 SEP()。
(这里是错误的,请纠正我)
Definition get_counter_spec :=
DECLARE _get_counter
WITH v : Z, counter:val
PRE []
PROP ()
LOCAL (gvar _COUNTER counter)
SEP (data_at Ews tint (Vint (Int.repr v)) counter)
POST [ tint ]
PROP ()
LOCAL(temp ret_temp (Vint (Int.repr (v+1))))
SEP (data_at Ews tint (Vint (Int.repr (v+1))) counter).