假定程序的第j-1條指令后所有操作數(shù)的值已經(jīng)規(guī)約為x1,x2,…,xM的表達(dá)式ej-1,1,ej-1,2,……,ej-1,M,第j條指令I(lǐng)j的語義為:
s1(e+i)=expi(s0(b),…,s0(b+u-1),s0(e),…,s0(e+u-1)),i=0,…,u-1,???(1-1)s1(d)=s0(d),對(duì)所有的d≠e,…,d≠e+u-1等式成立,???(1-2)
其中b是源操作數(shù)地址,e是目標(biāo)操作數(shù)地址;s0是指令執(zhí)行前的狀態(tài)向量;s1是指令執(zhí)行后的狀態(tài)向量;u是機(jī)器字長(zhǎng);si(d)表示狀態(tài)向量si在地址d一個(gè)字節(jié)上的數(shù)值,這里i=0或1;expi(…),表示的是由括號(hào)中的參數(shù)構(gòu)成的表達(dá)式,其中i=0,…,u-1;根據(jù)操作數(shù)的地址和長(zhǎng)度,為s0(b),…,s0(b+u-1),s0(e),…,s0(e+u-1)在ej-1,1,?ej-1,2,……,ej-1,M找到對(duì)應(yīng)的表達(dá)式,用它們?nèi)〈鶬j語義規(guī)則中的對(duì)應(yīng)的式子,得到指令I(lǐng)j執(zhí)行后s1表示的所有的操作數(shù)的值,它們都是初始值x1,x2,…,xM的表達(dá)式ej,1,ej,2,…,ej,M。
4.根據(jù)權(quán)利要求1所述的一種順序匯編指令程序驗(yàn)證方法,其特征是,語義證明腳本生成方法是:
為程序執(zhí)行前初始狀態(tài)向量s0=(x1,x2,…,xM)建立一個(gè)表示其特征的謂詞公式:Q0(s0)=“a1=x1,…,aM=xM,”;
在第j條指令執(zhí)行前,程序的狀態(tài)向量與操作數(shù)的初始值的之間的關(guān)系用一個(gè)邏輯公式Qj-1(s0,sj-1)表示,表達(dá)式如下:
sj-1.a1=expj-1,1(x1,x2,…,xM)∧…∧sj-1.aM=expj-1,M(x1,x2,…,xM);
其中sj-1是指令I(lǐng)j-1執(zhí)行前的狀態(tài)向量;expj-1,k(x1,x2,…,xM),k=1,…,M是由x1,x2,…,xM構(gòu)成的表示式;
指令執(zhí)行后所有操作數(shù)的值所滿足的條件用一個(gè)邏輯公式Qj(s0,sj)表示,表達(dá)式如下:sj.ak=expj,k(x1,x2,…,xM),k=1,2,…,M;其中sj是指令I(lǐng)j-1執(zhí)行后的狀態(tài)向量;
expj-1,k()表示狀態(tài)態(tài)向量sj-1的第k個(gè)分量的表達(dá)式;
第j條指令執(zhí)行語義規(guī)約要證明的是:
Qj-1(s0,sj-1)∧(sj=Ij?sj-1)→Qj(s0,sj);