Purkan vanhan (1996) pelin, joka on käännetty Watcom 386 -kääntäjällä. Tämä kääntäjä näyttää järjestävän ohjeet uudelleen aggressiivisesti hyödyntääkseen prosessoriputkistoa paremmin, kuten tässä kokoonpanokappaleessa nähdään:
Punaisella pisteellä merkityt ohjeet seuraavan puhelun parametrit; sinisellä pisteellä annetut ohjeet viimeistelevät edellisestä puhelusta palautetun objektin alustuksen. Niiden uudelleenjärjestely tekee kokoonpanon lukemisen helpommaksi:
... soita ClassAlloc13680_0FAhmov edx, [eax] mov [edx + Class180F4.WidgetInputHandler], offset gblHandleTransportDestinationAndCheckForPassengersSpacemov edx, [eax] Class13680.Paint ???], offset ClassVehicleManager__PaintForSomeWidgetmov dword_A4D88, eaxmov eax, [eax] mOV [eax + Class10B8C.MouseInputHandler], offset ClassVehicleManager__MouseInputHandlerpush 0push 2push 0push 4Ehpush 5Bhmov ebx, 5Chmov ECx, 21hmov EDX, ebpmov eax, ebpcall ClassAlloc13680_0FAhpush 0push 2. ..
(Huomaa, että siirrin mov reg, xxh
-ohjeet vielä alaspäin, koska kääntäjän kutsumiskäytäntö on ax-dx-cx-bx-stack , joten näen myös tässä argumenttien järjestyksen)
Onko IDA: ssa mahdollista saavuttaa tämä? En pyydä algoritmia määrittämään automaattisesti, joiden ohjeiden tulisi olla "punaisia" ja mitä "sinisiä", enkä halua korjata alkuperäistä binaaritiedostoa, haluaisin vain järjestää ohjeet uudelleen manuaalisesti ida-tietokannassa.
Vai onko jotain muuta tapaa parantaa tällaisen koodin luettavuutta IDA: ssa?