eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programming(announce) organic asmRe: [OT] (announce) organic asm
  • X-Received: by 10.31.130.213 with SMTP id e204mr7646vkd.8.1504825954491; Thu, 07 Sep
    2017 16:12:34 -0700 (PDT)
    X-Received: by 10.31.130.213 with SMTP id e204mr7646vkd.8.1504825954491; Thu, 07 Sep
    2017 16:12:34 -0700 (PDT)
    Path: news-archive.icm.edu.pl!news.icm.edu.pl!news.nask.pl!news.nask.org.pl!news.unit
    0.net!weretis.net!feeder6.news.weretis.net!feeder.usenetexpress.com!feeder-in1.
    iad1.usenetexpress.com!border1.nntp.dca1.giganews.com!nntp.giganews.com!h15no77
    6745qta.1!news-out.google.com!j49ni381qtc.1!nntp.google.com!h15no776739qta.1!po
    stnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail
    Newsgroups: pl.comp.programming
    Date: Thu, 7 Sep 2017 16:12:34 -0700 (PDT)
    In-Reply-To: <3...@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>
    User-Agent: G2/1.0
    MIME-Version: 1.0
    Message-ID: <f...@g...com>
    Subject: Re: [OT] (announce) organic asm
    From: fir <p...@g...com>
    Injection-Date: Thu, 07 Sep 2017 23:12:34 +0000
    Content-Type: text/plain; charset="UTF-8"
    Content-Transfer-Encoding: quoted-printable
    Lines: 69
    Xref: news-archive.icm.edu.pl pl.comp.programming:211486
    [ ukryj nagłówki ]

    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)

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: