pomoc s assmblerom ;)

Sekcia: Programovanie 26.03.2008 | 19:20
Tomi   Návštevník
no ucim sa pomalicky assembler, ale mam nanho par otazociek, ktore sa mi este nepodarilo uspesne vygooglit, nakolko online materialov na tento jazyk je dost malo :(

ked som dobre pochopil, tak v assembleri sa skoro vsetko robi pomocou systemovych preruseni(nemate niekto zdroj, kde si vypisane vsetky, alebo aspon tie najpouzivanejsie systemove prerusenia?). jednym z nich je int 80h. co je(ak som dobre pochopil) prerusenie po ktorom sa vola operacny system a vyuzivaju sa jeho funkcie. na http://www.digilife.be/quickreferences/QRC/LINUX%20System%20Call%20Quick%20Reference.pdf
som nasiel "zopar" tychto syscallov. mna by uz len zaujimalo, ze ako sa tieto syscally volaju? myslim, ako viem, ze ake maju parametre a pocet tychto parametrov(myslim argumentov)?

a neda mi este otazka: co sa systemovych preruseni tyka, tie su nezavisle na OS, alebo na platforme? alebo ani jedno z toho?

a co syscally?(tie asi su zavisle na OS, alebo nie?)

velmi sa medzi roznymi platformamy lisia(myslim interrupty a syscally), alebo sa snazia byt medzi sebou ako-tak kompatibilne?

diky :)
    • Re: pomoc s assmblerom ;) 26.03.2008 | 20:14
      Avatar uid0 Debian  Používateľ
      prerusenie 80 pouziva linux (to je jadro), su to systemove volania (to je syscall) a je pevne definovane ako sa predavaju hodnoty

      niektore volania su podla standardu POSIX/SUS (v jadre) a tiez niektore su v libc, libpthread a tak, tie su teoreticky kompatibilne, samotne cisla volani zavisia od jadra, prelozene volania (z C) zavisia od architektury

      co su v texte myslene platformy? x86? assembler nie je prenositelny

      a nemusis pouzivat len volania systemu, mozes si prilinkovat libc a volat funkcie (samozrejme to musi byt tak ako to robi C na danej platforme)

      a tvoje otazky sa velmi netykaju assembleru
      Debian. apt-get into it…
      • Re: pomoc s assmblerom ;) 26.03.2008 | 21:09
        Tomi   Návštevník
        no ale ja len chcem vediet, kde je supis systemovych volani a preruseni, aby som mal aspon sajn, coho vsetkeho je asm schopny a co vsetko vie riadit ;) lebo to smo nikde nevedel najst :(
        • Re: pomoc s assmblerom ;) 26.03.2008 | 21:18
          Avatar uid0 Debian  Používateľ
          asm je schopny zapisat instrukcie procesora, zopar statickych dat, nic viac...
          Debian. apt-get into it…
      • Re: pomoc s assmblerom ;) 27.03.2008 | 01:11
        Avatar borg Arch, Debian jessie  Administrátor
        myslel si 0x80 a nie 80.
        • Re: pomoc s assmblerom ;) 27.03.2008 | 09:40
          Avatar uid0 Debian  Používateľ
          80, slovom stodvadsatosem :P
          Debian. apt-get into it…
          • Re: pomoc s assmblerom ;) 27.03.2008 | 10:06
            Avatar borg Arch, Debian jessie  Administrátor
            no mohol si napisat bud 0x80 alebo 80h. nech to neni matuce :)
            • Re: pomoc s assmblerom ;) 27.03.2008 | 14:58
              Tomi   Návštevník
              no som fakt len zaciatocnik a chvilku potrva, kym pochopim, ze desiatkova sustava nieje to iste ako sestnaskova ;)
    • Re: pomoc s assmblerom ;) 26.03.2008 | 21:58
      Avatar Dušan Ďurech Debian Lenny 5.0  Používateľ
      odporucam pozriet na :

      serial o assembleri na Roote ( IMHO je to iba prelozena nejaka EN HOW TO [a v clankoch je trochu chyb -- viz komentare pod clankom] )

      http://www.root.cz/clanky/programujeme-assembler-linux/

      stranka o asemblery po Linuxom, odporuvam pozriet na pojekt asmutils ( linuxova distribucia, kede je cely userspace programovany v assemblery )

      http://asm.sourceforge.net/

      Vyborna kniha o assemblery :
      http://knihy.cpress.cz/knihy/pocitacova-literatura/programovani/ucime-se-programovat-v-jazyce-assembler-pro-pc/

      Domovska stranka autora :
      http://www.assembler.cz/

      Prednaska o assemblery pod Linuxom ( je sucastou prilohy v knihe )

      ftp://media.sh.cvut.cz/avc/Akce_SH/OpenWeekend_2002/marek-assembler.avi
      • Re: pomoc s assmblerom ;) 27.03.2008 | 15:17
        Tomi   Návštevník
        diky pekne za linky, mam co robit zopar dni ;))

        este by ma zaujimala jedna vec, resp. viac veci v jednej(mozno to je napisane v niektorom z tych linkov, ale chcel by som si to vyjasnit co najskor) ;-)

        ked mam viac procesov, tak KAZDY ma vlastny pamatovy priestor od 0x00000000 po nieco? cize kazda adresa sa viackrat nachadza v pamati? alebo ten jeden pamatovy priestor je vsetky procesy dokopy?
        and what about stack? ;) ten ma tiez kazdy proces vlastny?resp. kde ukazuje ESPcko(tiez ma kazdy proces vlastne)? ked mam 100 procesov, tak 100 procesov pouzije ten isty stack? nebude v tom bordel potom?
        aa este by ma zaujimalo, co je v pamati okrem tych procesov? nejaku cast pouziva aj OS? a co v nom ma? nejake tabulky s niecim?a tie syscally su vlatsne tiez funkcie jadra, ze? nachadzaju sa niekde v pamati? da sa predpokladat, ze rovnaky OS bude mat na rovnakom(podobnom) mieste podobne informacie?

        no to bola moja trosku rozpisana otazocka :)
        • Re: pomoc s assmblerom ;) 27.03.2008 | 19:04
          Avatar Dušan Ďurech Debian Lenny 5.0  Používateľ
          >ked mam viac procesov, tak KAZDY ma vlastny pamatovy priestor od 0x00000000 po nieco?

          kazdy proces ma svoj _vlastny_ virtualny adresovy priestor, ktory nezdiela s ostatnymi procesmi ( ak neratam dynamicke kniznice, ktory vykonny kod je namapovany do VM iba na spustenie a citanie a este zdielana pamet, ktora suvisi s medziprocesovou komunikaciou) kukni do /proc/pid/maps
          ( za pid si dopln pid procesu )

          >and what about stack? ;) ten ma tiez kazdy proces vlastny?

          kazdy proces ma vlastny VM priestor a v nom ma vlastny stack, btw. to by bolo teda synchornizovat push/pop do zdielaneho stacku :D

          >resp. kde ukazuje ESPcko ?(tiez ma kazdy proces vlastne)
          na vrchol zasobnika, kukni sa sam
          gdb -p <nejaky existujuci pid>
          info registers
          

          ESP je register a teno je v CPU iba jeden, takze kazdy porces nema vlastny, lenze pri prepinani procesov sa povodne hodnoty "zalohuju" a znovu "obnovia", takze proces nezisti ze z registrami operoval niekdo iny

          >ked mam 100 procesov, tak 100 procesov pouzije ten isty stack? nebude v tom bordel potom?

          Nie nebude v tom bordel, lebo kazdy jeden prpces ma jeden zasobnik. btw. a ak ma jeden proces viac vlakien tak kazde vlakno ma vlastny zasobnik v ramci toho procesu.

          >aa este by ma zaujimalo, co je v pamati okrem tych procesov?

          vo VM procesu je na archirekture x86 treti (3) az stvrty (4) GB VM pamete vyhradeny jadru, proces nemoze to tejto pemete citat a ani do nej zapisovat. ( BTW aj ked sa docitas, ze jadro nepouziva hned rovno 3GB VM ( mysleno treti GB VM )

          >syscally su vlatsne tiez funkcie jadra, ze?
          Ano, syscally su funkcie jadra. napr. v /usr/src/linux/kernel/fork.c najdes funkciu ktora sa spusta v jadre ( alebo inac povedane ju pusta proces beziaci v kontexte jadra) pri syscalle fork

          >da sa predpokladat, ze rovnaky OS bude mat na rovnakom(podobnom) mieste podobne informacie?

          IMHO nie neda, a moze ti to byt jedno, lebo do toho adresoveho priestoru sa proces nedostane.
      • Re: pomoc s assmblerom ;) 27.03.2008 | 16:25
        Avatar Matej Krajčovič Ubuntu 8.10  Používateľ
        ta kniha je perfektna
        You are registered as user #457083 with the Linux Counter.<br/> Given enough eyeballs, all bugs are shallow.<br/>
        • Re: pomoc s assmblerom ;) 27.03.2008 | 19:33
          skywaker   Návštevník
          tak ma napadlo v spojitosti z 86 asemblerom...


          http://www.kolibrios.org/