Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Assembly-opas

Sivun loppuun

vehkis91 [24.01.2008 16:50:52]

#

Mistä saan kunnollisen assembly oppaan?

hunajavohveli [24.01.2008 19:58:24]

#

Suomenkielisiä on harvassa. Googlella voit yrittää etsiä, mutta Putkaankin on vähän lupailtu jonkinlaista opasta ihan viime aikoina.

Päärynämies [24.01.2008 21:37:16]

#

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.

vehkis91 [25.01.2008 16:46:28]

#

Se oliki n assembler, sori kauheesti, mikäli näillä kielillä hirveesti eroo on...

Päärynämies [25.01.2008 17:26:20]

#

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.

vehkis91 [25.01.2008 19:44:03]

#

Kyll englanti taipuu ihan hyvin.. Eli voiko joku mainita saisin kys. oppaan?
Kun itse en (mielestäni)mitään hyvää löytäny.

Päärynämies [25.01.2008 21:49:18]

#

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.

Deffi [26.01.2008 09:52:39]

#

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.

Blaze [26.01.2008 13:35:18]

#

Deffi kirjoitti:

Korkeamman tason kielillä kun Win32-ohjelmointi on monien mielestä ihan tarpeeksi inhaa.

^ fixed

vehkis91 [26.01.2008 21:54:03]

#

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.

Päärynämies [27.01.2008 15:51:08]

#

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ä.

vehkis91 [28.01.2008 11:29:18]

#

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...

Metabolix [28.01.2008 16:18:57]

#

NASM on erittäin hyvä, jos haluat Intel-syntaksia opetella, ja GNU Assembler (as), jos AT&T-syntaksi kiinnostaa.

vehkis91 [28.01.2008 19:05:58]

#

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... ;)

aegis [28.01.2008 20:30:21]

#

Ei se syntaksi prosessorista riipu. Assemblerista se riippuu.

vehkis91 [28.01.2008 20:35:26]

#

no miksi sitten mitkään ohjelmat eivät "käänny" vaikka ne on suoraan kopioitu jostain ohjeesta?

ByteMan [28.01.2008 22:19:21]

#

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

Päärynämies [29.01.2008 20:33:40]

#

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ä".


Sivun alkuun

Vastaus

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

Tietoa sivustosta