eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingArchitektura aplikacji - powody wyłączania dll z exeRe: Architektura aplikacji - powody wyłączania dll z exe
  • X-Received: by 10.31.147.83 with SMTP id v80mr360366vkd.0.1512130872058; Fri, 01 Dec
    2017 04:21:12 -0800 (PST)
    X-Received: by 10.31.147.83 with SMTP id v80mr360366vkd.0.1512130872058; Fri, 01 Dec
    2017 04:21:12 -0800 (PST)
    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!peer03.iad!feed-me.highwinds-medi
    a.com!news.highwinds-media.com!g35no32886qtk.1!news-out.google.com!t48ni80qtc.1
    !nntp.google.com!m31no32885qtf.0!postnews.google.com!glegroupsg2000goo.googlegr
    oups.com!not-for-mail
    Newsgroups: pl.comp.programming
    Date: Fri, 1 Dec 2017 04:21:11 -0800 (PST)
    In-Reply-To: <ovq7de$f0m$1@node2.news.atman.pl>
    Complaints-To: g...@g...com
    Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=77.254.45.125;
    posting-account=xjvq9QoAAAATMPC2X3btlHd_LkaJo_rj
    NNTP-Posting-Host: 77.254.45.125
    References: <0...@g...com>
    <oukn36$l7m$1@node2.news.atman.pl>
    <4...@g...com>
    <oun2nc$r4t$1@node2.news.atman.pl>
    <8...@g...com>
    <ouviso$22u$1@node1.news.atman.pl>
    <9...@g...com>
    <1...@g...com>
    <e...@g...com>
    <ovgk2k$kc2$1@gioia.aioe.org>
    <5...@g...com>
    <ovnil0$ubp$1@gioia.aioe.org>
    <4...@g...com>
    <ovq7de$f0m$1@node2.news.atman.pl>
    User-Agent: G2/1.0
    MIME-Version: 1.0
    Message-ID: <c...@g...com>
    Subject: Re: Architektura aplikacji - powody wyłączania dll z exe
    From: "M.M." <m...@g...com>
    Injection-Date: Fri, 01 Dec 2017 12:21:12 +0000
    Content-Type: text/plain; charset="UTF-8"
    Content-Transfer-Encoding: quoted-printable
    X-Received-Bytes: 4683
    X-Received-Body-CRC: 2392869723
    Xref: news-archive.icm.edu.pl pl.comp.programming:211810
    [ ukryj nagłówki ]

    On Friday, December 1, 2017 at 1:23:11 AM UTC+1, AK wrote:
    > Użytkownik "M.M." <m...@g...com> napisał:
    >
    > > Pytasz dlatego, żeby wiedzieć, czy mam podstawy aby ustalić czego kompilator
    > > (bez względu na użyty algorytm) nie może (bez ryzyka) odrzucić? Nie mam takich
    podstaw.
    >
    > Ok. No to po krótce.
    > Nie kompilator ale linker (kiedys byl to osobny program) m atu glownie "do
    czynienia".
    > Akurat na DOS/Windows format *.lib-a to po prostu zbior *.obj-tow.
    > obj to kompilat powstajacy z np. (jednego lub wielu) *.c
    > Ten kompilat to po prostu bytecode, ale nie scalony - czyli skladajacy sie z
    segmentow kodu
    > i danych i slownika symboli dla linkera (zmanglowane nazwy funkcji, zmiennych itp)
    > W obj-cie nie ma podzialu na funkcje. sa tylko bloki kodu i danych. "Standardowo"
    linker w ogole nie
    > wie
    > nic o funkcjach. On tylko laczy porzez symbole bloki kodu i danych w gotowy *.com
    czy *.exe
    > To powoduje ze gdy ktos w takim *.c umiesci 80% funcji to nawet jesli uzyje w
    kodzie docelowym
    > tylko jednej z nich (i to bez zaleznosci) to dolinkowany zostanie i tak caly kod
    (segment CODE)
    > w ktorym znajduje sie ta funkcja. Dlatego dobrze jest (i tak sie robi) tworzyc
    wiele obj-tow
    > nawet jesli funkcje z jednego sa od siebie neizalezne.

    Chodź szczegółów nie znam, to ogólnie tak to sobie wyobrażałem i
    coś podobnego dawno temu czytałem.


    > Tak bylo drzewiej (na DOS i WIndows).
    Czyli teraz się pozmieniało.

    > Dzis jest lepiej bo i obj juz dawno porzestal byc surowy/standardowy i mozna wiele
    informacji do
    > niego
    > dowalic (chocby symbole dla debuggera, demangling itp) i linkowanie na poziomie
    funkcji dzis ni4
    > jest nowina/
    > Ale i tak to bardzo compiler-specific i wciaz dobrze jest stosowac zasade wielu
    neizaleznych
    > obj-tow.
    > Tyle ze kiedyc obj-ty mozna bylo linkowac teoretycznie dowlonym linkerem (dobze o
    tym wiedza
    > Clipperowcy
    > gdy stosowalismy Borlandowskiego szybkiego i prostego tlinka zamiast
    Clipperowskiego plinka), ale
    > dzisiaj
    > linkery staly sie juz wlasciwie czescia kompiltatora z w/w powodow.

    Rozumiem. Teraz niekoniecznie jest tak źle jak kiedyś, ale standardy
    poszły do kosza. Dziękuję za wyjaśnienia.

    Niepokoi mnie tylko jedno. W językach takich jak C, C++ , Pascal i w
    kilku innych, można zrobić:

    var = foo() // trudna do oszacowana wartość
    var(); // wywołanie funkcji

    Wiem że taka praktyka programistyczna jest bardzo zła, ale formalnie
    poprawna. Jak więc linkier / kompilator może ustalić, że pewne funkcje
    z libów można pominąć?

    Pozdrawiam

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: