Ang pagtulad ay isang pagtatangka na gayahin ang isang aparato sa isang tukoy na system. Mayroong tatlong paraan upang makabuo ng mga emulator: ang pabago-bago at static na muling pagsasama at interpretasyon. Upang makamit ang maximum na bilis ng bilis kapag nagtatrabaho, inirerekumenda na gamitin ang lahat ng tatlong mga pamamaraan. Isaalang-alang natin ang isang halimbawa ng pagsulat ng isang tipikal na emulator ng processor.
Panuto
Hakbang 1
Pumili ng isang wika ng programa. Ang inirekumenda at marahil ang tanging kahalili ay C at Assembler. Sa C, maaari kang gumawa ng code na ililipat sa iba pang mga platform. Medyo simple itong maunawaan at madaling i-debug, ngunit mas mabagal kaysa sa iba. Ang assembler ay nakikilala sa pamamagitan ng mataas na bilis ng trabaho, gumagamit ito ng mga rehistro ng processor, na nag-aambag sa paglapit ng programa sa muling pagsasaayos. Gayunpaman, napakahirap subaybayan at ayusin ang mga code dito. Mahalagang malaman ang napiling wika nang maayos at ma-optimize nang mabuti ang code para sa bilis.
Hakbang 2
Magtalaga ng paunang halaga sa cyclic at counter ng programa. Binibilang ng cyclic counter ang bilang ng mga cycle ng orasan pagkatapos nito naganap ang pagkagambala, at ipinapakita ng PC ng software ang lugar ng memorya kung saan nakasalalay ang susunod na tagubilin ng opcode.
Hakbang 3
Matapos mong matanggap ang opcode, ibawas ang bilang ng mga cycle ng orasan na kinakailangan upang maipatupad ang opcode mula sa loop counter. Mangyaring tandaan na ang ilang mga utos ay naiiba sa bilang ng mga tick depende sa mga argumento. Para sa mga naturang utos, palitan ang counter sa run code sa paglaon.
Hakbang 4
Matapos ang matagumpay na pagpapatupad ng opcode, suriin ang pangangailangan upang mag-trigger ng mga pagkagambala. Sa puntong ito, kumpletuhin ang mga gawain na agad na kailangang i-synchronize sa oras.
Hakbang 5
Suriin ang bawat pass ng cycle para sa pangangailangan upang makumpleto ang trabaho nito. Tandaan na ang programa ay dapat na modular, dahil ang karamihan sa mga computer ay binubuo ng mga module, at ang isang tipikal na emulator ay dapat, kung maaari, ay kapareho ng orihinal na system. Magbibigay ito ng mas mabilis at mas madaling pag-debug ng programa, at magagamit mo ang parehong mga module para sa iba't ibang mga emulator, sapagkat maraming mga computer ang batay sa parehong mga modelo ng mga nagpoproseso o mga nagpoproseso ng video.