1
我被困在下面的代碼的解釋中。爲簡單起見,我已經取代從數據段直接數字閱讀一些數字:x86:條件,跳轉和標籤的組合
L1:
fld qword ptr [Data1]
fcomp 1.0
fnstsw ax
test ah, 01h
jz L2
fld qword ptr [Data2]
jmp L3
L2:
cmp word ptr [Data3], 0001h
jnz L4
fld qword ptr [Data4]
L3:
fstp qword ptr [esp+10h]
L4:
fld qword ptr [Data5]
fcomp 1.0
fnstsw ax
test ah, 01h
jz L5
mov qword ptr [Data6], 43.0
L5:
fld qword ptr [Data7]
fcomp 1.0
fnstsw ax
test ah, 01h
jz L6
mov qword ptr [Data7], 53.2
L6:
這是從這個代碼我的解釋:
double Data1
double Data2
int Data3
double Data4
double Data5
double Data6
double Data7
if Data1<=1.0 || Data3==1
if Data1<=1.0
*(esp+10h)= Data4;
else
*(esp+10h)= Data2;
end
end
if Data5<=1.0
Data6=43.0;
end
if Data7 <= 1.0
Data7=53.2;
end
我有兩個顧慮:
我的解釋代碼是否正確?
在
L1
之間的範圍內L4
有兩個比較,但怎麼來的我的高級代碼,我有3個比較,我無法將其降低到兩個比較?原始代碼已處於高/中級代碼。我沒有關於原始代碼語言或編譯器的信息。