Jeg leter etter en algoritme eller noen tips om hvordan du finner omfangsendringer når jeg gjør statisk analyse av en dekompilert ASM-kilde. Jeg trenger å kjenne til omfangsendringene for sporing av stabelbruk og nå definisjoner for variabler. Hvis jeg har et program som
int somefunc (int b) {// Scope 1a = b + 1; if (a > 0) {// Scope 2 a = 0} else {/ / Scope 3 a = b;} returner a;
Når jeg har konstruert flytgrafen fra forsamlingen, hvordan vet jeg at omfangsendringer fra 1-2 og tilbake fra 2-1 etc? Min eneste gjetning så langt er at det ville ha noe å gjøre med dominans og å se etter underbilder. Noen av problemene jeg vil se med denne tilnærmingen, vil være sløyfene eller uttalelsene som har tidlige avslutninger som pause; Fortsette; return - de vil produsere en graf der du ikke kan bestemme dominans og ikke vil kunne fortelle når omfanget ditt øker eller avtar.