RE FORUM

[REVERSE ENGINEERING] => Programming => Topic started by: NeptuN on September 19, 2010, 12:33:25 PM

Title: Interpretace "test eax eax & jbe"
Post by: NeptuN on September 19, 2010, 12:33:25 PM
Ahoj lidi,
zrovna jsem narazil na jednu konstrukci v jednom cme, u ktere si nejsem jisty svou interpretaci. Zajimal by ve vas nazor na moji interpretaci.
Code: [Select]
test eax, eax
jbe skok_nekam
Eax obsahuje delku jmena (uvazujeme nenulovou, kladnou, program to jiz kontroloval), uvazujme napriklad hodnotu 9h. Instrukce test provadi v podstate operaci and, tj. bitove nasobeni, vysledek zahodi, nastavi jen priznaky nasledujicim zpusobem: CF=0, OF=0,Z=0/1, SF=0/1,PF=0/1. Naproti tomu instrukce jbe skoci, pokud CF=1 nebo ZF=1 [1]. Potud znama fakta.

Moje interpretace je nasledujici:
V pripade "test eax eax" je vzdy CF=0, tedy jedina moznost skoku je ZF=1. Priznak ZF=1 bude nastaven tehdy a jen tehdy, jestlize eax=0. To znamena, ze fakticky by zde slo nahradit instrukci jbe instrukci jz alias je. Navic, program jiz kontroloval delku jmena a odfiltroval nulovou delku. Zaporna delka byt nemuze. Suma sumarum, skok se nikdy nemuze uskutecnit, jedna se bud o "zmateni nepritele" nebo balast vyplyvnutej "optimalizujicim" kompilerem.

[1] oopweb.com/Assembly/Documents/ArtOfAssembly/Volume/Chapter_6/CH06-3.html#HEADING3-4
Title: Re: Interpretace "test eax eax & jbe"
Post by: Kockatá hlava on September 21, 2010, 08:56:26 AM
Je to tak.
Title: Re: Interpretace "test eax eax & jbe"
Post by: NeptuN on September 22, 2010, 10:15:28 PM
2 MazeGen: dik

Absenci kritiky od ostatnich beru jako tichy souhlas.