Mistä saan kunnollisen assembly oppaan?
Suomenkielisiä on harvassa. Googlella voit yrittää etsiä, mutta Putkaankin on vähän lupailtu jonkinlaista opasta ihan viime aikoina.
Uhkailin kirjoittavani oppaan putkaan aiheesta. Tuossa tosin voi vierähtää viikosta kuukauteen, kun valmiina on vasta hahmotelma sisällysluettelosta. Kunnollisia ja nykyaikaisia suomenkielisiä assemblyoppaita on kovin harvassa. Englanniksi aiheesta löytyy huomattavasti enemmän, jos vain kieli taipuu. Tosin siinäkin hajontaa laadussa on. Lisäksi vaikuttaa minkälaiseen käyttöön ja suoritinarkkitehtuurille aiot assemblyä koodata. Kerrohan lisää, niin voin vaikka koittaa nopsaan etsiä mielestäni hyviä oppaita.
Lisäksi voin suositella opettelun tueksi Intelin Developer's Manual -sarjaa. Vaikka niissä ei itse ohjelmointi käsitelläkään, niin löytyy sieltä käskykannan kuvaus ja paljon tietoa x86-suoritinarkkitehtuurista.
Se oliki n assembler, sori kauheesti, mikäli näillä kielillä hirveesti eroo on...
No assemblyä kutsutaan myös assembleriksi. Nykyään noita termejä käytetään hieman sekaisin. Lisäksi assembleriksi joissakin yhteyksissä kutsutaan assembly-kielen kääntäjää. Kyllä sen useimmat assemblyn (tai assemblerin) harrastajat ymmärtävät käytit sitten kumpaa nimeä tahansa. Jotkut saattavat siitä huomautella, mutta itse kielihän on pääasia, ei sen nimi.
Kyll englanti taipuu ihan hyvin.. Eli voiko joku mainita saisin kys. oppaan?
Kun itse en (mielestäni)mitään hyvää löytäny.
No edelleenkin sen hyvän oppaan neuvomista helpottaisi, jos tietäisimme minkälaiselle suoritinarkkitehtuurille ja käyttöjärjestelmälle aiot sitä ohjelmoida tai edes mihin tarkoitukseen. Tuskin haluat jotain Motorola 68000 -assembly opasta, jos aiot x86-suorittemelle tehdä Linuxilla ohjelmia.
Jos Win32-ohjelmointi assemblyllä kiinnostaa, niin Iczelionin opassarja on luettavan arvoinen. Jos tuon opassarjan kanssa lähtee väkertämään, niin sitten olisi hyvä myös olla MASM32 ja jokin kiva IDE, vaikka WinAsm studio. En kyllä ilman aikaisempaa Win32-kokemusta omaavaa henkilöä suosittelisi aloittamaan Win32-ohjelmointia assemblyllä :D
Hauska ja nopea tapa oppia x86-assemblyn perusteet ja vähän enemmänkin on Reverse Engineeraus, jota itse jonkin aikaa harrastettuani huomasin myös koodaavani assemblyllä kuin vettä vaan. Sitä varten taas suosittelisin opassarjaa Lena's Reversing for Newbies. Reverse Engineerauksella tässä tapauksessa tarkoitan konekielisen koodin tutkimista ja muuttamista debuggerilla, jotta saadaan ohjelma tekemään mitä sitten ikinä halutaankaan.
Yläpuolella siis ihan vain omia henkilökohtaisia mielipiteitäni ja suhtaudutaampa siihen sitten sen omaisesti. Herää kyllä myöskin kysymys, että kuka oikeesti enään nykyaikana koodaa Win32-ohjelmia assemblyllä? :P. Korkeamman tason kielillä kun Win32-ohjelmointi on monien mielestä paljon helpompaa, nopeampaa ja tehokkaampaa.
Deffi kirjoitti:
Korkeamman tason kielillä kun Win32-ohjelmointi on monien mielestä ihan tarpeeksi inhaa.
^ fixed
No mulla on win vista 32bit, Linux ubuntu 64bit ja Amd turion 64, mutta 32 bittisia ohjelmia ajattelin tehdä.
Ohjelmat siis tulevat vistalle ei linuxille. Ajattelin käyttää assemblyä c++ kielen kanssa.
http://drpaulcarter.com/pcasm/index.php
Tuosta osoitteesta löytyy jonkinlaista opasta aiheeseen englannin kielellä. Näytti ihan laadukkaalta mitä itse vilkaisin ja ei ole kuin muutaman vuoden vanha (viimeisimmät korjaukset ja päivitykset vuodelta 2007). Suosittelen tutustumaan. Lisäksi tuolta löytyy oma lukunsa C/C++:n ja assemblyn yhdistämisestä.
Minun kääntäjäni ei käännä minkään ohjeen mitään "ohjelmia".
Kääntäjäni on Fasm. Olisiko mahdollisesti jotain parempaa tulkkia kuin tuo fasm?
Jos on niin kertokaa...
NASM on erittäin hyvä, jos haluat Intel-syntaksia opetella, ja GNU Assembler (as), jos AT&T-syntaksi kiinnostaa.
En ole varma mikä syntaksi tässä on, ku mulla on amd turion 64 prossu...
Ja hups se olikin toi NASM eikä mikään fasm... ;)
Ei se syntaksi prosessorista riipu. Assemblerista se riippuu.
no miksi sitten mitkään ohjelmat eivät "käänny" vaikka ne on suoraan kopioitu jostain ohjeesta?
siksi, että ei kukaan nyt TOSISSAAN usko et joku suoraan ohjeesta kopioitu ohjelma muka OIKEESTI kääntyis
jos ohjeen tekijä käyttää jotain tosi hämäräperäistä pohjois-indonesialaista asm kääntäjää, jossa on jotkut ihmeasetukset, nii voi olettaakkin et standardin mukaiset kääntäjät ei käännä sitä..
esimerkki:
visual c++:an #pragma -rivejä on turha yrittää ajaa g++:n(vai mingwkö.. =/ ) läpi, ku ne on visual c++:n kääntäjäkohtainen ominaisuus
Assemblykääntäjät eivät tunnu noudattavan mitää standardia (jos sellainen edes on olemassa, ainakaan itse en ole törmännyt vielä) sen suhteen miten koodi tulee kirjoittaa. Vaikkakin itse assemblyn syntaksi olisi sama ja käskyt näyttävät samoilta, niin esim. eri ohjelmalohkojen määrittely ja muuttujien tilanvaraus saattavat poiketa syntaksiltaan. Tutustu oman kääntäjäsi manuaaliin ja muunna koodiesimerkit kääntäjällesi sopivaksi tai vaihda aina siihen kääntäjään, mitä koodiesimerkin kirjoittajakin käyttää.
PS. Ja assemblyähän ei sitten tulkata. Sitä käännetään, eikä vain "käännetä".
Aihe on jo aika vanha, joten et voi enää vastata siihen.