pa pislim da na intellovom sajtu ima kako izgledaju instrukcije zapisano u HEX iliti binarno ako oces jos uproscenije...
Mada nije lose da za tu tematiku pogledas neke dissaembler engine koje su pisali razni VXeri, recimo Z0MBIE http://www.vx.netlux.org/29a/main.html pogledaj ovde za vise, ima pregrst kodova na tu temu
Oni ostali, ja se raspao... četničke pesme
get out of ma way you bi***...
Ne čitam pp, ako nekom trebam ima mail : chetnik(na)atlas(tačka)cz
Ako sam ja dobro razumeo tvoje pitanje, taj tvoj "instrukcioni kod" moze biti: 1-bajtni, 2-bajtni, 3-bajtni, 4-bajtni i 6-bajtni... to ustvari predstavlja format instrukcije. Pa onda tu moze da se kaze da se jednobajtne instrukcije koriste kada se mesto operanda podrazumeva ili kad se instrukcija poziva sa registrom kao operandom, i tako dalje... Reci mi da li je to ono sto ti trazis, da ne bih ja dzabe tipkao ovde...
Upravo to... format instrukcije. Negde sam pronasao da se format instrukcije, kod mikorkontrolera, sastoji iz OPCODE-a i jos dva bajta u kojima se upisuje adresa gde ce se rezultat upisati i adresa operanda...
to sto si ti naveo je 3-bajtni format... Sad cu ti opisati svih 5 formata instrukcija:
1-bajtni format: (opcode) [registar]
Kod ovog formata znaci ide samo opcode kada se mesto operanda podrazumeva, ili se dodaje naziv nekog registra u nastavku ako je on operand
2-bajtni format: (opcode) (mod reg r/m)
Ovde sam ti razdvojio po bajtovima, znaci opcode zauzima jedan bajt, mod 2 bita, reg 3 bita i r/m 3 bita. Ove instrukcije su tipa registar/memorija u registar bez pomeraja, ili registar/memorija iz registra bez pomeraja... Deo reg predstavlja adresu registra procesora u kojem se nalazi odredisni operand, npr. ax je 000, di je 111, a za ostale se ne secam ;) a mogu ti ih naci, ako ces da ucis i to... Poljima mod i r/m odredjujes koji ce se registri koristiti za adresiranje.
3-bajtni format: (opcode) ((neposredni operand))
Ovaj format se za instrukcije tipa neposredni operand u registar. Neposredni operand zauzima dva bajta, kao sto se vidi prema mojim zagradama.
4-bajtni format: (opcode) (mod reg r/m) ((memorijska lokacija ili registar))
Ovaj format instrukcije je slican 2-bajtnom, samo sto se ovde moze koristiti i pomeraj. Znaci ovaj format se koristi za instrukcije tipa registar/memorija u registar sa pomerajem ili registar/memorija iz registra sa pomerajem
6-bajtni format: (opcode) (mod reg r/m) ((memorijska lokacija)) ((neposredni operand))
Koristi se za instrukcije tipa neposredni operand u memoriju. Kao sto vidis, slican je 3-bajtnom, samo sto se kod trobajtnog ide u registar, a ovde u memoriju.
Bilo bi lijepo da si rekao o kojem se konkretno CPU-u radi, pa da dobiješ malo konkretnije detalje :)
Inače, moderni x86 CPU instrukcije prevodi u kompaktniji RISC-like interni instrukcijski format, a individualne operacije koje su namijenjene jedinicama izvršavanja ovise o detaljima implementacije CPU-a ("ops" za K7, "rops" za PIII, "atoms" za Crusoe, etc.). Usput se interno redoslijed instrukcija rearanžira tako da se mogu izvoditi paralelno te se, kao rezultat, sekvencijalni, uređeni (u smislu ordered) kod koji je proslijeđen CPU-u se izvodi paralelno i OOO(Out of order).
Tu je još i priča VLIW vs. dinamički superskalarni scheduling instrukcija, blablabla...vidi detalje na ars technica ili u priručnicima :>
Mislim da mu je do sada prosao ispit, tako da mu verovatno vise nisu potrebne dodatne informacije ;)
Q: Are there really any systems where
void main() doesn't work?
A: It has been reported that programs using void main() can crash.
Q: The book I've been using, _C Programing for the Compleat Idiot_,
always uses void main().
A: Perhaps its author counts himself among the target audience.
Upravu si da mi je prosao ispit... malo sam bio neodogovoran sto to nisam napomenuo... :(
izvinjavam sam se svima... i takodje zahvaljujem, narocito BaCkSpAcE-u, ciji post mi je u mnogome pomogo.
...a nisam imao vremena da napisem ovo jer mi je to bio poslednji ispit, koji sam polozio i sada spremam veoma ubrzanim tempom diplomski iz MKE kako bih stigao da "uhvatim vozu" za martovsku klasu... nadam se da cete me razumeti
Ma naravno da cemo te razumeti. Da nam sretno polozis diplomski i, jos vaznije, da nam se ziv vratis iz vojske :)
Q: Are there really any systems where
void main() doesn't work?
A: It has been reported that programs using void main() can crash.
Q: The book I've been using, _C Programing for the Compleat Idiot_,
always uses void main().
A: Perhaps its author counts himself among the target audience.