Hvad skal en online asm-simulator kunne for at være brugbar

Tags:    assembly

User
Martin @ 16.03.18 13:17
Hey udviklerere. Jeg har i min fritid for sjovt efterhånden fået lavet mig en asm-simulator. Den simulerer ATT-style asm. Den kommer til at kunne køre online fra min hjemmeside. Jeg er ikke interesseret i at tjene penge på den eller noget, men jeg kom alligevel til at tænke på: hvis nu en udvikler som jer skulle bruge sådan en simulator, hvad skulle den så kunne? Feks. skal den kunne vise hvilke registre der er brugt? hvordan hukommelsen ser ud? hvordan programmet bliver afviklet? Det kan også være den skal vise mere avancerede ting som pipelining af instruktioner, dette er dog nok ikke det første jeg får implementeret.
Der er helt sikkert andre sådanne simulatorer derude. Hvis I bruger nogle af dem, og dermed finder dem brugbare, må I også meget gerne linke til dem.

Mvh. Martin




Indlæg senest redigeret d. 16.03.2018 13:18 af Martin
5 svar postet i denne tråd vises herunder
5 indlæg har modtaget i alt 10 karma
Sorter efter stemmer Sorter efter dato
Det skal vel kunne ca. hvad en alm. debugger gør. Visning af maskinkode, registre, stak, arbitrær hukommelse.

Hvordan vil du klare systemkald?



User
Martin @ 20.03.18 14:04
Hey Robert.
Mht. til arbitrær hukommelse: skal den vise stack og heap for sig? Det giver ok mening, synes jeg.
Min hjemmeside er faktisk en terminal. Så de systemkald der har med i/o og filer at gøre, bliver håndteret af terminalen. De systemkald der har med allokering og den slags at gøre, kommer programmet/simulatoren nok til at tage sig af. Jeg har faktisk overvejet at lave en hukommelsesmodel for siden, men det bliver nok ikke lige foreløbigt :-)

Tak for svaret.




Stakken bør vises med word size entries, hukommelsen som linjer af 16 bytes hexdumps med ascii dekodning. Og det kunne være cool hvis man kunne åbne flere memory views så man kan se flere steder af hukommelsen samtidig.

Er det bare et hygge projekt for at lære assembly eller skal det bruges til noget?



User
Martin @ 24.03.18 10:19
Super fede indputs!
Jeg er gået lidt i tænkeboks for at finde på en sej, men stadig praktisk måde at vise hukommelsen på. Jeg tror jeg har nogle ideer. Hvad mener du foresten med ascii dekodning?

Jeg læser datalogi. Vi har lige haft et kursus der hedder CompSys (ComputerSystemer). Her blev vi sat til at færdigøre en simulator skrevet i C. Jeg tænkte: hvor svært kan det være at lave, og jeg er altså gået i gang med at at lave en, bare skrevet i F#. Det er et projekt jeg arbejder på når jeg ikke har andet at lave, så det er helt klart et hyggeprojekt. Det er også for at lære asm. Det er faktisk gået op for mig at nogle tests er mere omstændige at lave end implementeringen af det der testes. Sådan er det nok at skrive et meget lavniveaussprog i et meget højniveaus ditto.




ASCII dekodning er den højre del af nedenstående:

Fold kodeboks ind/udKode 


Hvis du vil have lidt flere ideer så kig evt på "IDA Pro" og BinaryNinja disassemblerne. De er ret vilde. Der bruger jeg bl.a. Unicorn (https://github.com/unicorn-engine/unicorn) til at emulere eksekveringen af den del af en malware der dekoder resten. Typisk er malware krypteret men starter så med en kort rutine som dekrypterer resten...det er den del, man emulerer med Unicorn så resten kan læses og forståes.



t