Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Assembly: win32asm

KemXy [28.01.2003 14:42:36]

#

Miten win32asm eroaa tavallisesta assemblystä. Muuttuvatko rekisterit,käskyt,osoitteet jne. ja miten?

thefox [28.01.2003 14:54:10]

#

"Tavallinen assembler" käsitettä ei oikeastaan olekaan. On olemassa monenmonta konekieltä, onhan prosessorejakin vaikka minkälaisia.
Win32Asm tarkoittaa käytännössä sitä, että ohjelmoidaan Windows -sovelluksia käyttäen (useimmiten) Win32API:a ja x86-konekieltä. Assembleri ja linkkeri pistetään sylkemään PE-sovelluksia.
Eli vastaus kysymykseesi: ei eroa.
Mutta, tietty et voi käyttää mitään DOS:in keskeytyspalveluja (et muitakaan keskeytyksiä) kun Wintoosaa -koodaat (ring3). Windowsia ajetaan lisäksi suojatussa tilassa.. että segmenttihäslingeistä yms. ei myöskään tarvitse välittää.
Bleh, jos jokin on epäselvää kysy pois..

KemXy [28.01.2003 14:59:39]

#

No niinpä...oonkin tähän mennessä lähinnä koodannut debugilla dosille com ohjelmia(todella yksinkertaisia).
Muutamia kysymyksiä ois:
Mitä ovat eax ja esi? Onko eax jokin ax:n korvaaja. Sitten tulis varmaan ebx jne...?
Mitä tekee call ja invoke?
Invokea käytetään näköjään ainakin MASM:lla ohjelmoidessa.

thefox [28.01.2003 15:36:10]

#

eax, ebx, ecx ja edx ovat ax:n, bx:n, cx:n ja dx:n 32-bittisiä "jatkeita".

Varmaan tiedätkin että ax:aan kuuluu ah ja al, bx:ään bh ja bl jne. Eax:iin kuuluu ax (alempi sana) ja sen lisäksi 16 bittiä joita ei voi suoraan sorkkia.. tai voi, eax:in kautta, mutta niitä ei ole eroteltu ah ja al-tyyliin.
esi ja edi ovat si ja di rekistereiden 32-bittisiä jatkeita.

call kutsuu aliohjelmaa, eli käytännössä tunkee paluuosoitteen pinoon ja hyppää aliohjelmaan.
invoke on masm-makro, jolla helpotetaan aliohjelmien kutsumista. Kun funktiot määritellään PROTO:n avulla, voidaan niiden parametrit tunkea kätevästi.. kääntäjä sitten laajentaa tuon pusheiksi ja calliksi. Parametrejä funktiolle syötetään siis useimmiten push:in avulla (tunkee pinoon dataa).
Invoke on näppärä juuri win32Api:n funktioita kutsuttaessa.
Anteeksi.. tuli hieman sekavaa tekstiä.. ;-)

KemXy [28.01.2003 15:45:07]

#

Joo, no ehkäpä se tästä... Pitääkin lähteä hakemaan joku hyvä win32asm tutoriaali, että oppisi jotain noiden käytöstäkin ;)

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta