Kezdőoldal » Számítástechnika » Programozás » Miért van az, hogy egy C++...

Miért van az, hogy egy C++ kód, ami két KB, ha lefordítom akkor 4000KB?

Figyelt kérdés
Én azt gondolnám a kód többszörösen nagyobb kéne legyen, histen abban szavakat használunk, amik eleve hosszabbak a kelleténél, és eleve az abc szabályait használjuk. Egy gépi kód hossza sokkal rövidebb kéne legyen, nem?

2012. szept. 22. 17:51
 1/10 anonim ***** válasza:
100%

Nos, nem feltétlenül. Először is, ha csak nem következik be valószínűtlen esemény, nem annyi bájton lesz a gépi kód, mint amennyibe szövegesen írtad. Aztán lehet includolni olyan állományokat, amik baromi nagyok, de csak 1-1 függvény kell belőlük a programhoz. És amikre még nem gondoltam. :)

Ugyanígy <10 sorból írható olyan program, amihez kevés a RAM-od, bármekkora modul(ok) van(nak) is a gépedben. :)

2012. szept. 22. 18:08
Hasznos számodra ez a válasz?
 2/10 A kérdező kommentje:
de azért a g++ lehetne ennyire okos, nem? hogy fölöslegesen ne includoljon mindent
2012. szept. 22. 18:50
 3/10 anonim ***** válasza:

Nem csinál fölöslegesen semmit, de most gondolj bele.

Van egy halom parancs C++-ban, ami önmagában gépi kódban többszöröse és kell hozzá még egy rakat másik dolog is.


A gépi kódban elég egyszerű utasítások vannak csak, a programozási nyelv maga pedig ehhez képest baromi magas szintű.


De nézzünk csak egy egyszerű példát:

[link]



Hasonlítsd össze a C++ kódot mondjuk az assembly-vel (ez áll legközelebb a gépi kódhoz) és akkor itt még csak egy sima szöveg kiírásáról van szó!

2012. szept. 22. 19:23
Hasznos számodra ez a válasz?
 4/10 iostream ***** válasza:
75%

A gépi kód nagyon egyszerű, elemi lépésekből áll. A magasszintű programozási nyelvek lényege az, hogy röviden tudsz leírni összetettebb fogalmakat (az utasítás nagyon alapszintű dolog).


No meg az #include olyan, hogy a standard könyvtárat nem tekintjük a program részének, így abból rengeteg kód bejön extraként.

2012. szept. 22. 20:35
Hasznos számodra ez a válasz?
 5/10 anonim ***** válasza:
Gépi kódban nem szokás programozni, mert az gépi kód... 010100101110011011 ... ez ember számára csak nehezen értelmezhető... Az assembly alacsony szinten okés, de ti úgy úgyse tudnátok programozni, az OS nem is engedné, csakis az OS felett tudtok programozni, de ha már ott vagytok, akkor használjátok a BIOS vagy DOS rutinokat, amit a LINKER úgyis befordít... Összességében az assembly lesz a legkisebb, de úgyse fog egyezni a forrásfájl és a futtatható fájl mérete.
2012. szept. 22. 20:37
Hasznos számodra ez a válasz?
 6/10 iostream ***** válasza:
48%

várj, az os nem enged assemblyben programozni, ez nekem uj, sot ugy erzem, en at lettem vagva amikor megis - latszolag ugye - megtettem. Dehat ilyen az elet.


Amugy a gepi kodot inkabb hexaban szokas irni, mert az alapegyseg legalabb 1 byte meretu...

2012. szept. 23. 10:34
Hasznos számodra ez a válasz?
 7/10 anonim ***** válasza:

iostream-nél a pont!


De szerintem Passring válasza tipikusan most olyan volt, hogy tudja miről beszél, csak le akarta egyszerűsíteni, hogy a kérdező vagy kevésbé hozzáértők is értsék és ezzel egy felületet nyitott, ahol bele lehet kötni a válaszba.

2012. szept. 23. 11:06
Hasznos számodra ez a válasz?
 8/10 anonim ***** válasza:
Elnézést úgy látom rosszul fogalmaztam, nem azt akartam kifejezni, hogy nem lehet assemblyben programozni, ha os van a gépen, ennek semmi értelme nem lenne... azt akartam ezzel mondani, hogy az os nem hagy sok műveletet végrehajtani, mint például a direkt memóriacímzést sem... Ha viszont mondjuk PIC-et programozol, a lehetőségeid korlátlanok, de nem fogod elérni a BIOS rutinok, mert nincs is BIOS... a LINKER nem fordít be semmit, a tárgykód , forráskód és a futtatható program mérete is meg fog egyezni, cserébe mindent te programozol le...
2012. szept. 23. 12:17
Hasznos számodra ez a válasz?
 9/10 tabaki ***** válasza:
Pcmanus, te vagy az?
2012. szept. 24. 16:54
Hasznos számodra ez a válasz?
 10/10 anonim válasza:

Két okból:

Mert ami nekünk egy utasításnak tűnik, amögött lehet, hogy több száz, vagy több ezer gépi utasítás áll. Továbbá a fordító sok olyan dolgot is befordít/szerkeszt a futtatható állományba, ami történetesen nem kell. Ez lehet a felhasznált könyvtárak beszerkesztett, de fel nem használt kódja (ugyanis a fordító csak fordít, nem fogja azt lesni, hogy most ténylegesen mit használok fel. Amire utasítják, azt teszi.) de lehetnek pl. nyomkövetési meg hibakeresési információk is.

Igazán az a 400kb alapméret nem is olyan sok. Amikor már gigabájtos ramok meg a legócskább gépekben is negyed terás vinyó van, nem fognak párszáz kilobájton görcsölni.


Egyébként ha emlékeim nem csalnak, a g++ -s kapcsolóval megtiltod, hogy a szimbólumtáblát beszerkessze a futtatható fájlba, és ezzel drasztikusan lecsökkentheted a fájlméretet.

2012. dec. 13. 17:08
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:




Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!