Elikkäs haluaisin alkaa harjoittelemaan assembly ohjelmointia, ja tässä olisi muutama kysymys liittyen asiaan:
1. Onko saatavilla suomen kielisiä assembly kirjoja? jos on niin minkä nimisiä? (ei sillä ettei englanti sujuisi mutta kun uusi asia ja aika lailla asiatekstiä niin olis helpompi lukea aluksi suomeks.
2. Käsittääkseni tarvitsen myös kääntäjän? Minkä niminen olisi käyttökelpoinen?
3. Kannattaako aluksi vaan päntätä tietoa kalloonsa vai esim. lukea aina vähän ja sitten kokeilla vähän käytännössä?
4. Ja niin joo.... melko oleellinen kysymys; Millä sitä sitten koodataan? (muistio -> kääntö ?)
Ja kyllä, olen etsiskellyt myös haulla, mutta kysyn nyt vielä epäselvyyksien poistamiseksi.
....Tässäpä nämä nyt tällä hetkellä. Kiitoksia avusta jo etukäteen.
1. On. Kannattaa etsiä kirjastosta. Joku 486-ohjelmointi tjsp.
2. NASM on aika käytetty. Jokin prosessoriemulaattorikaan ei ole paha idea kokeiluja varten.
3. No ASMia on vähän paha kokeilla käytännössä. Ehkäpä jos hankit jonkin muun kääntäjän ja kokeilet inline-assemblyllä, mutta siinä ei kyllä pääse kovin edistyneisiin asioihin.
4. Juurikin niin, mutta onhan niitä helpottaviakin editoreita olemassa.
4. Aika moni editori tukee ASMin syntaxia jo valmiiksi(Notepad++)... eli kaipa semmoinen olisi aika hyvä:)
Joo. Kävin hakemassa ton NAMS:in. Ne filutko pitää tunkea johonkin ja sitten kääntäminen tapahtuu komentokehotteesta tai jotain, vai miten?
CoDeR kirjoitti:
Elikkäs haluaisin alkaa harjoittelemaan assembly ohjelmointia, ja tässä olisi muutama kysymys liittyen asiaan:
Jos tarkotuksena on perehtyä assemblyyn yleensä, kannattaa harkita jonkun muun kuin sekasotku x86 assemblerin opettelemista aluksi. Kun idea on selventynyt voi x86 sekasotku assemblerikin aueta helpommin (tai sitten vaan tulla sellainen olo, että siihen ei halua koskeakkaan kun parempaakin on olemassa) :)
CoDeR kirjoitti:
2. Käsittääkseni tarvitsen myös kääntäjän? Minkä niminen olisi käyttökelpoinen?
Eikös Assenpyllyä TULKATA, eikä käännetä?
(Pilkunviilauskohtaus)
Ei, vaan nimenomaan käännetään (symbolisesta konekielestä konekielelle).
1. Kirjahyllyssäni on kirja nimeltä Inside Assember. Kirja ei ole mikään erityisen uusi ja se käsitteleekin ainoastaan reaalimoodia (ok... siellä muistaakseni oli muutama viittaus suojattuun moodiin. Cd:llä taisi olla jopa esimerkki suojatun moodin käytöstä) ja dossia. Tärkeintähän kuitenkin on ymmärtää idea siitä miten homma toimii, joten kyllä tuo harjoitteluun kelpaa hyvin :)
2. Kyllä... kääntäjän tarvitset. Nasm on kiva (TGunnerille: Kyllä assemblyä (=symbolista konekieltä) käännetään konekieleen, jota sitten suoritetaan prosessorissa).
3. Luet perusjutut, etsit netistä esimerkin ja opettelet ymmärtämään miten ohjelma toimii. Sitten muokkaat ja katsot mitä tapahtuu (aina vain parempi jos ymmärrät mitä muutoksesi pitäisi tehdä :). Sitten siitä siirryt tekemään tyhjältä pöydältä jonkin pienen ohjelman.
4. Ei sillä editorilla merkitystä ole
Itselläni on projektihakemisto, jossa alahakemisto tools. Sitten projektihakemistossa jokaiselle projektille oma hakemisto, jossa on build.bat (sisällöksi vaikka ..\tools\nasm.exe project.asm -o project.com) kääntämistä helpottamaan (Linuxissa kääntämistä varten vastaava skripti build.sh).
Eli tällöin tiedostot olisi seuraavasti:
Projektit\tools\nasm.exe
Projektit\hello\hello.asm
Projektit\hello\hello.com
Projektit\hello\build.bat
Joo kiitti krisu :).
riittäkö tohon battiin toi "\tools\nasm.exe project.asm -o project.com" vai pitäskö siihen laittaa koko polku?
ja mikä tuo .com filu on? ....niin ja miten itseasiassa se kääntö sitten tapahtuu? (jos on nuo kansiot ja tiedostot edellämainitulla tavalla?)
.com on "vanha" suoritettavan teidoston muoto, jossa on muistaakseni 64kt muisti rajoitus, eli .exe korvaa tuon .comin nykyisin ainakin melkousein. Joitan ajureita on .com muodossa yksinkertaisuuden takia olemassa.
PS. DOS ei tunnista .exe:ä ja .com:a tunnisteen perusteella vaan sisällön.
Mureakuhan wikissä on pari asm opasta
http://wiki.mureakuha.com/wiki/Etusivu#Assembly
Kääntäminen tapahtuu siis ajamalla tuo .bat tiedosto vaikka komentokehotteessa (huomoi, että sisältönä tulee olla ..\tools\ jne.jne., eikä pelkkä \tools\jne.jne. riitä). Voithan toki myös kirjoittaa lähdekoodin samaan hakemistoon tuon nasm.exe:n kanssa, jolloin sitten komentokehotteessa menet hakemistoon jossa nasm on, ja kirjoitat "nasm projekti.asm -o projekti.com".
Hieman epäselvä selitys, mutta uskoisin sen olevan vielä ymmärrettävissä :-)
Onko Linuxiin olemassa asmi kääntäjää? Tai siis ennemminkin miten se toimii? :P
man nasm
Blaze kirjoitti:
man nasm
Jos nyt Blazeillaan vähän: "No manual entry for nasm".
Mutta kuitenkin apt-get install nasm, jossa tulee mukana myös edellämainittu manuaalisivu.
Linkku kirjoitti:
apt-get install nasm
No Blazeillaan vielä vähän: "bash: apt-get: command not found"
Distrosta riippuen, jollakin se kuitenkin löytyy. Lähdekoodit saa kyllä NASMin projektisivulta. http://sourceforge.net/projects/nasm
Aihe on jo aika vanha, joten et voi enää vastata siihen.