eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programming(announce) organic asm › Re: [OT] (announce) organic asm
  • Data: 2017-09-06 22:00:07
    Temat: Re: [OT] (announce) organic asm
    Od: fir <p...@g...com> szukaj wiadomości tego autora
    [ pokaż wszystkie nagłówki ]

    tak wogole pisanie asma nie jest trudne choc ma troche trudniejsze kawalki

    moe przedstawic jeden problem bo zrobilem na odwal (tj pierwsza iteracje problemu)
    i musze tu troche poprawic

    najpierw asembler zbiera info nt importow
    (na co slkada sie lista nazw dll-ek i wywolywanych z nich funkcji)

    ja to zbieram do tablicy o stalym rozmarze (np 100 na 100) ktora ma taka zawartosc

    "moduleX", "fooA", "fooB", NULL, NULL, ...
    "moduleY", "fooG", "fooH", "fooI", NULL,
    ..
    "moduleZ", "fooP", "fooQ", "fooR", NULL, ...

    "moduleW", "fooI", NULL, NULL, NULL,
    "moduleT", "fooS", "fooT", NULL, NULL,
    NULL,
    NULL,


    i to jest jeden maly problem bo moze nastapic przepelnienie jesli importowanych
    dll-ek bedzie wiecej niz 100 lub importowanych funkcji dla jednej dll-ki bedzie
    wiecej niz 99

    taka tablica jest jednak wygodna
    i prosta

    sam to pewnie zostawie tak jak jest tylko rozmaiar zahardkoduje na wiekszy np 1000 na
    1000 (jest to tablica wskaznikow wiec te pare mega mozna poswiecic ;c - ale nie jest
    to ideologicznie czyste (w takich wypadkach jednak wole zrobic w pierwszej iteracji
    cos co jest proste niz ogolne)

    dalej problem jest nawet wiekszy bo na podstawie zawartosci tej tablicy trzeba
    zbudowac sekcje importow w exacu

    ta sekcja sklada sie z czegos takiego:

    1)
    najpierw jest tablica (N+1)*20 bajtow
    gdzie N to liczna importowanych modulow
    gdzie ustawia sie pewne wskazniki
    - to sie buduje dosyc latwo

    dalej sa jeszcze dwie rzeczy to wpisania

    2 trzebe przekopiowac te wszystki stringi z wspomnienej tablicy importow

    zdaje sie ze ich kolejnosc nie jest nawet zbyt wazna wiec moge jakby poleciec po
    kolei wierszami ignorujac nule i wrzucajac strcpy (chyba moge zalozyc ze nazwy maja
    max 32 znaki choc nie jestem pewien

    wymaga to jednach chyba napisania dosyc glupiej funkcji

    int RowColumn2LinearOrder(x,y)

    bo pozniej bede potrzebowal uzyskania dokladnego offsetu do tej nazyw dla
    ukladu modul-funkcja

    taka funkcja przeliczania z x y na ten linearny offset jest dosyc glupia, ale chyab
    tak zrobie (glupia ale stosunkowo malo roboty a musze chodzic na kompromisy z wlasnym
    lenistwem/ograniczeniami energetycznymi)

    3) dalej trzeba jeszcze zbudowac listy wskaznikow na te nazwy, te listy wskaznikow
    maja byc per-modul i bodajrze konczyc sie zerem na koncu listy funkci dla kazdego
    modulu

    w sumie tutaj chyba moge wykorzystac ten sam liniowy porzadek korzystajac z tego ze w
    tym liniowym listy nazw funkcji sa przetykane nazwami modulow, tylko zamiast
    wskaznika na nazwe modulu dam zero

    to chyab da sie zrobic latwo jesli gdzies sie nie walne (ogolnie to nie jest trudne
    ale problem jest ze zrozumieniem zasad tego formatu oraz z nie popelnieniem pomylki w
    generowaniu tych danych)

    oprocz tego trzeba jeszcze zrobic identyczna kopie tej tablicy bo jedna trzyma nazwy
    na stale a druga wypelnia
    prawdziwymi wskaznikami do implementacji
    loader windowsa

    na koniec w tej tablicy z punktu 1) wypelnie sie wskazniki do tych 2 list,
    i do nazwy modulu dla kazdego modulu

    w sumie to powinno dzialac sa tylko dwie wspomniene niedogodnosci
    1) mozna osiagnac limit kwadratowej tablicy
    2) ta funkcja przechodzenia z x,y na linerana kolejnosc jest drobinke glupia/brzydka

    w sumie pewnie trzebbylo to zrobic inaczej tj budowac liste par modul-funkcja na
    koniec ja posortowac i nie byloby straty pamieci i linearny porzadek
    sam by sie zrobil, ale chyba zalozylem ze kwadratowa tablica bedzie prostsza (nie
    trzeba bylo pisac sortowania ;c

    na razie chyba zrobie na kwadratowej moze kiedys pozniej poprawie na ta liste 1d - ew
    nastepnym razem bedzie wiadomo by takie przypadki robic od razu na liscie 1d





Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: