Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Kako napraviti JMP na neku liniju koda?

[es] :: Asembler :: Kako napraviti JMP na neku liniju koda?

[ Pregleda: 3511 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Ramirez

Član broj: 13160
Poruke: 318
*.179.eunet.yu



Profil

icon Kako napraviti JMP na neku liniju koda?06.06.2004. u 13:40 - pre 219 meseci
Ako imam recimo 3 instrukcije i ja zelim da mi prva bude skok na trecu ja to mogu da uradim ovako:

JMP SKOK
INC EAX
SKOK:
DEC EAX

Ali to mi je extra glupo.... kako ja da mu kazem da skoci na trecu instrukciju ako ne znam njenu adresu (bar mislim da je ne znam)... znam samo poziciju te instrukcije u odnosu na skok? Nadam se da ste me razumeli?
 
Odgovor na temu

Mikky

Član broj: 18
Poruke: 1563
195.178.35.*

ICQ: 44582291


+58 Profil

icon Re: Kako napraviti JMP na neku liniju koda?06.06.2004. u 14:05 - pre 219 meseci
1. Ne razumem zasto ti je ovo "extra-glupo".
2. Ne razumem sta zapravo zelis. JMP instrukcija radi tako sto skace za neki br bajtova u odnosu na nju a ne na tacno odredjenu adresu. Npr
jmp skok:
ce se kompajlirati u jmp XX, gde je XX broj bajtova u napred ili nazad koliko treba skociti.
-I know UNIX, PASCAL, C, FORTRAN,
COBOL, and nineteen other high-tech
words.
 
Odgovor na temu

Ramirez

Član broj: 13160
Poruke: 318
*.190.eunet.yu



Profil

icon Re: Kako napraviti JMP na neku liniju koda?06.06.2004. u 15:40 - pre 219 meseci
ma znam ja to.... nego ako ja napravim lupam 100 linija koda u kojima imam 15 skokova, za svaki skok moram da imam label (ako se to tako zove) koji govori mom skoku gde da skoci.... kada ja otvorim neki vec iskompajlirani exe... on lepo kaze JMP 0040A65C. Pa sam ja mislio da to moze da se uradi tako nekako...???
 
Odgovor na temu

system0verride
Nishville

Član broj: 8363
Poruke: 44
*.verat.net

Sajt: www.biosforge.com


Profil

icon Re: Kako napraviti JMP na neku liniju koda?07.06.2004. u 15:28 - pre 219 meseci
Ne razumem zasto ce ti tako nesto onda moras da znas tacno mesto svakog dela koda u memoriji i heksa oznake masinskih operacija ?
 
Odgovor na temu

Ramirez

Član broj: 13160
Poruke: 318
*.sbb.co.yu



Profil

icon Re: Kako napraviti JMP na neku liniju koda?07.06.2004. u 15:59 - pre 219 meseci
pa meni je sasvim ok da imam label koji mi oznacava petlju... pa svaki put kada idem u petlju skok skace na nju... ali ako u toku programa imam samo obicno racvanje (recimo da preskacem neku instrukciju) kod mi izgleda smesno :) prosto vise ne znam kako da nazovem svaki label a da mi to ima smisla??? ali nije vazno.....

Imam nesto drugo da pitam:

u .exe fajlu imam insturkciju:
LEA EDX,DWORD PTR DS:[ECX+ECX*2]
mene zanima kako ja da znam sta se tamo nalazi (debuger mi kaze sta tamo ima)... tacnije kako da naprisem svoj .asm kod koji ce dobiti istu vrednost u EDX kao u fajlu iz kog je ova instrukcija?

I mozda jos vaznije pitanje je: meni nije jasan taj nacin indexiranja.... sta od cega zavisi i cela ta segment:offset prica... citao sam o tome ali nisam bas najbolje skapirao pa ako neko zna neki tutor ili knjigu (uglavnom sam procitao ono sto je u TOP-u )?
 
Odgovor na temu

Bojan Kopanja
Bojan Kopanja
Senior Web Developer, ZeusSoftware
Stara Pazova

Član broj: 6155
Poruke: 507
*.direcpceu.com

ICQ: 346697685
Sajt: www.zeussoftware.rs


Profil

icon Re: Kako napraviti JMP na neku liniju koda?07.06.2004. u 20:47 - pre 219 meseci
Pa sto se tice skokova, kada bi radio tako kako ti kazes iamo bi ogromnih problema... Zamisli situaciju: Napisao si program od, recimo, 1500 linija koda, sto i nije nesto veliko i u njemu imas 30 skokova. Ti si radio skokove kao jmp 0FF32C0h ( primer samo za jedan skok, zamisli da su svi takvi... ) i sada si nesto dodao u svom kodu ili si nesto izbacio zbog optimizacije koda. Posle toga tebi vise ni jedan skok nece radi kako treba, jer su svi pomereni u memoriji "gore" ili "dole", tako da bi morao rucno da prodjes kroz ceo kod i da za svaki od tih 30 skokova ponovo racunas na koju adresu sada treba da skace...

Eto, to je jednostavan primer problema koji bi bio neizbezan takvim nacinom rada, a inace linker i uradi to sto ti pricas, tj. napravi tabelu relokacija za skokove i onda i kada se nesto promeni on na osnovu te tabele relokacija zna opet gde treba da "prebaci" skokove.

Eto, nadam se da sam ovo dobro objasnio ( a ako sam negde pogresio, molim kolege koji imaju veci staz rada u asembleru da me odmah isprave ... ).

Pozdrav!
 
Odgovor na temu

Sundance

Član broj: 7510
Poruke: 2559
*.ZEMRIS.FER.HR



Profil

icon Re: Kako napraviti JMP na neku liniju koda?08.06.2004. u 17:05 - pre 219 meseci
ako su instrukcije na koje to primjenjujes dosta slicne, implementiraj ih preko makroa i prefiksiraj lokalne labele sa @(TASM) ili koja je vec sintaxa u asembleru koji koristis. primjer koji si naveo nema smisla, pa ne znam sto da napisem, ali mislim da ces se vec snaci.. :)

ono pitanje u vezi "pronalazenje vrijednosti u registru" je extra-glupo :) pa vidi u debuggeru koji su brojevi, dodijeli ih registrima i simuliraj! indeksiranje na x86 je milost bozja u odnosu na, recimo, ARM. Zato suti i uci :-))
 
Odgovor na temu

[es] :: Asembler :: Kako napraviti JMP na neku liniju koda?

[ Pregleda: 3511 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.