Article View: pl.comp.lang.asm
Article #382Re: jak zaczac ?
From: Bogdan (bogdro)
Date: Mon, 10 Jul 2006 13:05
Date: Mon, 10 Jul 2006 13:05
79 lines
4574 bytes
4574 bytes
Stachu 'Dozzie' K. napisał(a): > A szkoda, bo brakuje mi choćby wyjaśnień, jak jest ułożona pamięć pod > takim Linuksem podczas pracy programu, Oj, od dość dawna jest (a przynajmniej schemat): http://rudy.mif.pg.gda.pl/~bogdro/linux/linux02.html, nagłówek: "Organizacja pamięci w Linuksie". Rysunek w stylu ASCII-art podaje w zasadzie tylko adresy (tzn. nie ma podziału na segmenty itp.), bo pamięć jest liniowa i do dowolnej części programu można się dostać poprzez dowolny rejestr segmentowy (co innego, że czasem może to sypnąć program). Co więcej chciałbyś zobaczyć? (pytanie na serio, nie ironiczne!) > jak z assemblera wołać funkcje > z libc (w tym co to jest main i _start), Fakt, w głównym kursie tego rzeczywiście nie ma. Za to jest w niektórych mini-kursach (programy sieciowe, programy rezydentne). Może rzeczywiście powinienem dołożyć do kursu. > jak przydzielać pamięć dla > zmiennych lokalnych, Nie ma osobnego rozdziału o procedurach/podprogramach, więc tego też nie ma. W zasadzie takie "przydzielanie" sprowadza się do sub esp, liczba_bajtow i operowaniu na [esp+xx] lub [ebp-xx]. O tym na pewno wspomnę. > dlaczego nie ma syscalli malloc()/free() Bo nie ma ich w jądrze (czyli pytaj o to jądrowców). Za to na stronie są, a właściwie to "jest", bo jest tylko 1: sys_brk() - pobierz/ustal maksymalny adres w sekcji danych. http://rudy.mif.pg.gda.pl/~bogdro/linux/przer80h_1.html#f0045 (funkcja numer 45) Dajesz 0 w EBX, dostajesz swój najwyższy adres. Do tego adresu dodajesz tyle, ile chcesz i podajesz w EBX do kolejnego wywołania sys_brk(), a jądro przydziela. Mój opis tej funkcji istotnie nie mówi o tym, że może ona być używana do takich celów. Pomyślę nad zmianą. Z resztą, to była moja pierwsza strona z cyklu "int 80h", więc chyba starałem się wszystko zbyt dokładnie tłumaczyć. Kiedyś były jeszcze jakieś funkcje alloc/free_hugepages, ale wyrzucono je. Czy są jakieś inne? W tej chwili nie pamiętam. http://rudy.mif.pg.gda.pl/~bogdro/linux/alloc_tut_linux.html > i parę > innych takich. Proszę o podanie konkretów. Kurs jest mój, ale nie pisałem go dla siebie (bo i po co?), tylko dla innych. Ale nie mogę wiedzieć, czego innym osobom w nim brakuje. Swój kurs pisałem w taki sposób, aby omówić wszystko, do czego ja sam miałem wątpliwości, ucząc się asma. Mówiąc mi, czego Twoim zdaniem brakuje, pomożesz kolejnym osobom, które w przyszłości będą czytały mój kurs. > Jak widać, to nie plus dla strony, że jest najlepsza, > tylko minus dla wszystkich pozostałych, że brak współczesnych podstaw. > > Wiem, że to kubeł zimnej wody, ale już mi obmierzły bezkrytyczne ochy > i achy nad stroną Bogdana. Lepszy taki kubeł konkretów niż po prostu "Bogdan, twoja strona jest do d***". Cieszę się, że zwracasz uwagę i podajesz *konkretne* tematy. Nie mogę obiecać, że wkrótce się tym zajmę, ale na pewno wezmę Twoje słowa pod uwagę. Już sobie dopisałem te 3 rzeczy do "pliku rzeczy do zrobienia". -- Pozdrawiam, Bogdan (Linux i FreeDOS) Kurs assemblera x86 (DOS i Linuks): http://rudy.mif.pg.gda.pl/~bogdro Grupy dyskusyjne o asm: pl.comp.lang.asm alt.pl.asm alt.pl.asm.win32 Prawdziwy, bezpieczny komunikator: www.JabberPL.org
Technical Details
Message-ID:
<e8tjfq$6as$1@nemesis.news.tpi.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.nask.pl!news.nask.org.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mailReferences:
<e8ifjo$o1i$1@atlantis.news.tpi.pl> <1152193946.886142.257150@75g2000cwc.googlegroups.com> <e8lm1p$dnv$1@inews.gazeta.pl> <e8nogd$cgm$2@atlantis.news.tpi.pl> <e8rd6g$ltc$1@nemesis.news.tpi.pl> <1152466310.474238.58090@35g2000cwc.googlegroups.com> <slrneb2iab.56h.dozzie@hans.zsh.bash.org.pl>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.nask.pl!news.nask.org.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mail From: "Bogdan (bogdro)" <bogdan@bogdan.pl> Newsgroups: pl.comp.lang.asm Subject: Re: jak zaczac ? Date: Mon, 10 Jul 2006 15:05:42 +0200 Organization: tp.internet - http://www.tpi.pl/ Lines: 79 Message-ID: <e8tjfq$6as$1@nemesis.news.tpi.pl> References: <e8ifjo$o1i$1@atlantis.news.tpi.pl> <1152193946.886142.257150@75g2000cwc.googlegroups.com> <e8lm1p$dnv$1@inews.gazeta.pl> <e8nogd$cgm$2@atlantis.news.tpi.pl> <e8rd6g$ltc$1@nemesis.news.tpi.pl> <1152466310.474238.58090@35g2000cwc.googlegroups.com> <slrneb2iab.56h.dozzie@hans.zsh.bash.org.pl> NNTP-Posting-Host: acrd103.neoplus.adsl.tpnet.pl Mime-Version: 1.0 X-Trace: nemesis.news.tpi.pl 1152536890 6492 83.11.5.103 (10 Jul 2006 13:08:10 GMT) X-Complaints-To: usenet@tpi.pl NNTP-Posting-Date: Mon, 10 Jul 2006 13:08:10 +0000 (UTC) User-Agent: Thunderbird 1.5.0.4 (X11/20060516) In-Reply-To: <slrneb2iab.56h.dozzie@hans.zsh.bash.org.pl> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit