Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Assembly: ASMin kääntö

Sivun loppuun

Baglair [14.01.2006 17:12:47]

#

Olen harjoitellut ASMia irrallisen testilaitteiston kanssa, mutta nyt kun haluaisin kokeilla ASM koodaamista tietokoneella törmäsin ongelmaan; miten saan käännettyä ASM koodini Linux käyttöjärjestelmässä (Fedora Core 4). Onnistuuko se GCC:llä?

Metabolix [14.01.2006 17:21:55]

#

Linuxista yleensä löytyy as. Vaihtoehtoisesti voit ladata NASMin tai jonkin muun. Varmaankin löytyy pakettienhallinnasta useampikin. Pitää muistaa, että NASM käyttää hieman eri syntaksia kuin monet muut.

Myös gcc:llä voi kääntää, nimittäin inline-asmia. Se ei ole ollenkaan huodo idea. Toinen aika kiva idea on kääntää asminsa vaikka NASMilla levyke-imageen ja käyttää jotakin PC-emulaattoria kokeiluissaan. Silloin pääsee käsiksi koko virtuaalilaitteistoon.

Baglair [14.01.2006 17:27:46]

#

Oliskos mitään esimerkkiä tuosta gcc:llä kääntämisestä?

Metabolix [14.01.2006 17:30:27]

#

http://www.ibiblio.org/gferg/ldp/GCC-Inline-Assembly-HOWTO.html

Se on tosiaan inline-asmia, sitä ei ole tarkoitus käyttää paria riviä enempää.

Baglair [14.01.2006 20:51:45]

#

Vielä semmoista että nyt olen tuolla GASilla yrittänyt tehdä mitä tahansa niin aina valittaa joka komennosta
esim. mov al, 01h

{standard input}:1: Error: too many memory references for `mov'

Mikä vikana?

Metabolix [14.01.2006 21:33:07]

#

Kuten sanoin: "Pitää muistaa, että NASM käyttää hieman eri syntaksia kuin monet muut." Ne monet muut käyttävät AT&T-syntaksia.

Kirjoittamalla Googleen GAS Assembler löytyy mm. tällainen sivu: http://en.wikibooks.org/wiki/X86_Assembly/GAS_Syntax

Syntaksia pääsee vilkaisemaan tekemällä C:llä pienen ohjelman ja kääntämällä sen gcc:llä parametrilla -S, jolloin tuloksena on ASM-koodia.

Edelleenkin suosittelen NASMia.

Baglair [14.01.2006 21:34:17]

#

Juu kokeilin jo tota mutta samaa se valittaa.
EDIT: Noniin suurkiitokset Metabolix

Metabolix [14.01.2006 21:36:20]

#

Kokeilit mitä? Laitapa tuo ensimmäinen rivi näkyviin.

Baglair [14.01.2006 21:41:59]

#

Kokeilin siis eri syntakseja mutta nyt pelittää. Kiitos

thefox [15.01.2006 05:03:29]

#

Metabolix kirjoitti:

Kuten sanoin: "Pitää muistaa, että NASM käyttää hieman eri syntaksia kuin monet muut." Ne monet muut käyttävät AT&T-syntaksia.

Sanottakoon vielä, että NASMin syntaksissa on pari merkittävää eroa jopa useisiin Intel-syntaksia käyttäviin assemblereihin verrattuna (mm. suositut Borlandin TASM ja Microsoftin MASM). Tämä on hyvä tietää jos meinaa käyttää webin koodiesimerkkejä hyväkseen.


Sivun alkuun

Vastaus

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

Tietoa sivustosta