🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.asm
Article #382

Re: jak zaczac ?

#382
From: Bogdan (bogdro)
Date: Mon, 10 Jul 2006 13:05
79 lines
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-mail
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>

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