Nie jestem w 100% przekonany o swojej racji :0 , ale przerobiłem troche kod:
procedure TForm1.Button1Click(Sender: TObject);
var
X : integer;
begin
Randomize;
x := Random(100); //tego raczej nie zoptymalizuje bo nie wie co zostanie przypisane
if (x = 2) or (x = 3) then ShowMessage('ok');
end;
i Delphi wygenerowało taki kod asm:
<b>if (x = 2) or (x = 3) then ShowMessage('ok');</b>
cmp eax,$02
jz +$05
cmp eax,$03
jnz +$0a
mov eax,$004515c
call ShowMessage
Nie jestem specjalistą od assemblera, ale wydaje mi się że jeżeli porównanie cmp eax,$02 wypadnie pozytywnie to wykonany zostanie skok o 5 do przodu, co wypada własnie na mov eax,$004515c (trzeba zobaczyć adresy). Czy gdzies sie mylę ?