[so2] [curs2] nelamuriri

Andrei Epure epure.andrei at gmail.com
Thu Mar 7 01:22:31 EET 2013


2013/3/7 Silviu Popescu <silviupopescu1990 at gmail.com>:
> 2013/3/7 Andrei Epure <epure.andrei at gmail.com>
>>
>> slide 38
>> Am înțeles că se face căutare binară a adresei instr. care a cauzat
>> page-fault [1] folosind adresele __start_ex_table și __stop_ex_table.
>> Întrebări:
>> - Nu înțeleg ce este punctul aici: "__start_ex_table = ."
>> - *(__ex_table) înseamnă ceva de genul copiere a tabelei acolo?
>> - Ce înseamnă AT(ADDR(__ex_table) - LOAD_OFFSET)?
>> - În general, ce se întâmplă în codul ăla?
>>
>> [1] http://lxr.linux.no/#linux+v3.8.2/arch/x86/mm/extable.c#L82
>> [2] http://lxr.linux.no/#linux+v3.8.2/kernel/extable.c#L51
>> [3]
>> https://docs.google.com/presentation/d/1qmKGpAiDX0GNAXnNXBtSE2xV8s659PZDb2ZLtQKjzbw/edit#slide=id.i178
>> [4]
>> http://staff.ustc.edu.cn/~xlanchen/cailiao/x86%20Assembly%20Programming.htm
>
>
>
> Salut,
>
> Am gasit via LXR codul care te intereseaza[1]. Practic, slide-ul contine cod
> de linker script. Poti gasi detalii pe net[2] si in laboratorul de CPL[3].
>
> Punctul ala reprezinta contorul de locatie si e un fel de pointer catre
> locatia curenta. E similar cu $ in limbaj de asamblare, unde $ era folosit
> in ceva de genul:
> MESSAGE DB "test"
> LENGTH EQU $ - MESSAGE - 1
>
> Vezi link-urile [2] si [3] pentru o explicatie mai corecta din punct de
> vedere tehnic.
>
> In continuare se defineste sectiunea __ex_table in fisierul de iesire, care
> va fi incarcata la adresa rezultatata din diferenta dintre adresa sectiunii
> __ex_table (?) si LOAD_OFFSET.
> Se plaseaza un fel de etichete de start si stop la contorul de locatie.
> *(__ex_table) inseamna ca sectiunea __ex_table din fisierul de iesire este
> compusa din sectiunile __ex_table ale fisierelor de intrare.
>
> Deci, intuitia mea e ca acel cod face urmatoarele lucruri:
> - aliniaza inceputul tabelei de exceptii la un multiplu de 16
> - plaseaza sectiunea __ex_table la o adresa particulara; nu inteleg care
> este rolul acelei diferente pasate ca argument lui AT(), poate stie cineva
> mai bine
> - marcheaza inceputul si sfarsitul tabelei de exceptii
> - concateneaza sectiunile __ex_table ale fisierelor de intrare intr-o
> sectiune __ex_table mare
>
> Hope this helps a little.
>
> [1] http://lxr.linux.no/#linux+v3.8.2/include/asm-generic/vmlinux.lds.h#L456
> [2] http://www.math.utah.edu/docs/info/ld_3.html
> [3] http://elf.cs.pub.ro/cpl/wiki/laboratoare/laborator-07
>

Mersi, văzusem sursa în nucleu, dar nu mi-a trecut prin cap că e alt
limbaj de programare. Bine, scria că e linker script și în curs, dar
nu știam ce e aia.


> --
> Silviu Popescu
>
>
> _______________________________________________
> http://ocw.cs.pub.ro/courses/so2/resurse/lista-discutii



-- 
Andrei Epure


More information about the so2 mailing list