eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programming(announce) organic asmRe: [OT] (announce) organic asm
  • X-Received: by 10.31.11.210 with SMTP id 201mr7727vkl.9.1504826848610; Thu, 07 Sep
    2017 16:27:28 -0700 (PDT)
    X-Received: by 10.31.11.210 with SMTP id 201mr7727vkl.9.1504826848610; Thu, 07 Sep
    2017 16:27:28 -0700 (PDT)
    Path: news-archive.icm.edu.pl!news.icm.edu.pl!news.nask.pl!news.nask.org.pl!news.unit
    0.net!peer03.am4!peer.am4.highwinds-media.com!peer01.fr7!futter-mich.highwinds-
    media.com!peer02.iad!feed-me.highwinds-media.com!news.highwinds-media.com!q8no7
    84119qtb.0!news-out.google.com!j49ni381qtc.1!nntp.google.com!h15no780195qta.1!p
    ostnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail
    Newsgroups: pl.comp.programming
    Date: Thu, 7 Sep 2017 16:27:28 -0700 (PDT)
    In-Reply-To: <f...@g...com>
    Complaints-To: g...@g...com
    Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=37.47.11.23;
    posting-account=Sb6m8goAAABbWsBL7gouk3bfLsuxwMgN
    NNTP-Posting-Host: 37.47.11.23
    References: <7...@g...com>
    <oo6r6b$bcp$1@node1.news.atman.pl> <oohior$19n$1@node2.news.atman.pl>
    <0...@g...com>
    <ook8o5$gs1$2@node2.news.atman.pl>
    <2...@g...com>
    <ookj75$qs8$1@mx1.internetia.pl>
    <8...@g...com>
    <1...@g...com>
    <0...@g...com>
    <1...@g...com>
    <8...@g...com>
    <2...@g...com>
    <f...@g...com>
    <b...@g...com>
    <3...@g...com>
    <f...@g...com>
    User-Agent: G2/1.0
    MIME-Version: 1.0
    Message-ID: <b...@g...com>
    Subject: Re: [OT] (announce) organic asm
    From: fir <p...@g...com>
    Injection-Date: Thu, 07 Sep 2017 23:27:28 +0000
    Content-Type: text/plain; charset="UTF-8"
    Content-Transfer-Encoding: quoted-printable
    X-Received-Body-CRC: 929871674
    X-Received-Bytes: 6288
    Xref: news-archive.icm.edu.pl pl.comp.programming:211487
    [ ukryj nagłówki ]

    W dniu piątek, 8 września 2017 01:12:35 UTC+2 użytkownik fir napisał:
    > jutro jeszcze (zapewne) opisze jeszcze smutne kwestie multipasow i fixupow (ciekawe
    tylko jesli ktos chce wiedziec jak dziala asm, mi samemu przyda si o tym wspomniec by
    uzyskac wieksza jasnosc jak to dziala a jest to troche zagmatwane
    >
    > moze w sumie pare slow juz teraz
    >
    > 1) na poczatku skanujac zrodlo buduje sekcje importow - oprocz samego binarnego
    bloku tejh sekcji mam tez funkcja podajaca dla danego importu (podawanego po nazwie)
    wartosc relatywnego wskaznika
    > wskazujacego miejsce gdzie lezy pointer do tej funkcji (ktory zostanie wypelniony
    > przez loader windy)
    > Oprocz tego istatna dana jest tez koncowy rozmiar tej sekcji
    >
    > 2) skanujac zrodlo buduje sekcje data oprocz niej mam funkcje ktora dla danego
    labelu z sekcji data podaje re;atywny wskaznik do adekwatnej komorki w tej sekcji -
    oprocz tego wazna dana jest finalny rozmiar tej sekcji
    >
    > 3) skanuje zrodlo i asembl;uje mnemoniki,
    > oprocz samych mnemonikow w zrodla mozna tam napotkac 4 rzeczy
    > l) label okreslajacy miejsce w kodzie (definicja np poczatku procedury)
    > c) odwolanie do labelu w kodzie (w przod lub w tyl) (glownie przez skoki)
    > d) odwolanie do labelu w danych (glownie przez mov)
    > i) odwolanie do importu (glownie przez call)
    >
    > o tym co trzeba z tym zrobic moze jutro
    >
    > (wlasciwie zadnego z tych labeli nie mozna przetlumaczyc na inta w pierwszym
    podejsciu:
    > l) te labele trzeba zrzucic do tablicy razem z ich wartosciami (ktore przynajmniej
    mozna od razu wyznaczyc)
    > c) odwolanie trzeba zrzucic do tablicy
    > razem z miejscem w kodzie ktore trzeba wypwlnic (ktore to miejsce tez na szczescie
    mozna od razu ustalic)
    > d) odwolanie do danych tez trzeba zrzucic do tablicy razem z miejscem w kodzie
    ktore trzeba wypelnic
    > i) odwolania do importow trzeba zrzucic do tablicy (azem zmiejscami ktore trzeba
    wypelnic)
    >
    > po zasemblowaniu tego otrzymuje sie rozmar sekcji kodu, ktory trzeba wyrownac w
    gore co pozwala uzyskac polozenie sekcji importow, dodanie rozmiary wyrownanego w
    gore rozmiaru sekcji importow daje adres poczatku sekcji data
    >
    > teraz z tego co sie orientuje trzeba przeiterowac wszystkie 4 tabele i zarzucic te
    fixupy, w wyniku czego powinnq powstac poprawnie wypelniona sekcja kodu, ktora razem
    z sekcja importow i danych zapisuje sie na dyck
    > i zrobione
    >
    > niby nie takie trudne ale obraz troche
    > komplikuja lekkie subtelnosci, glowni eto ze aligmenty sekcji w ramie sa ine niz w
    pliku a same adresy czasem podaje sie w postaci relatywnych offsetow (zdaje sie ze
    wiekszosc w sekcji importow juz nie pamietam a te w sekcji kodu raczej w postaci
    pelnych absolutnych wskaznikow) idzie sie pogubic
    >
    > do tego trzeba jeszcze poustawiac odpowiednie pola w naglowkach pe co tez jest co
    nieco nieczytelee i dziwne
    >
    > wiekszosc tego mam zrobione ale polozenie sekcji data i imports wklepalem na
    sztywno (dzieki czemu nie musialem robic tabel fixupow dla danych i importow) i teraz
    wlasnie musze to pewnie w weekend poprawic bytan asm wlasni enie mial ograniczen
    >
    > (wogole szczerze mowiac nawet nieco dziwne mozna powiedziec jest to ze jak
    kodowalem tego asma to wiekszosc problemow jakie tu wspomnialem udawalo sie jakos
    zakodowac jakby w transie bez myslania o nich, jest to ciekawa zdolnosc , zdolnosc
    do kodowania nez myslania o czyms o czym wydawaloby sie trzeba pomyslec) (pozniej
    jednak, czyli teraz kapka myslania na te tematy sie przydaje - zeby miec jasnosci i
    nie przeoczyc moze czegos, i moe tez po to by sie troche tego jak to dziala nauczyc
    na pamiec)

    tak naprawde chyab to jest jeszcze bardziej skomplikowane, mianowicie zawartosc
    sekcji importow zalezy od jej polozenia, a jej polozenie zalezy od rozmiaru sekcji
    kodu - co wymusza inna kolejnosc niz pisalem

    zdaje sie
    - najpierw cod
    - pozniej importy
    - pozniej dane
    - na koniec fixupy

    idzie sie z leka pochlastac (zwlaszcza ze musze to przerabiac w stosunku do wersji z
    polozeniemi sekcji wkodowanymi 'na sztywno')

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: