Kyhäsin tänään minimalistisen ROT-13 salaajan (lähdekoodin koko 95 tavua):
main() {char c; for(;;) { c=getchar(); if(c>64&&c<123){c +=(c<78|| c>96&&c<110)? 13:-13;}putchar( c);}}
Kun käännän sen Windowsissa komennolla "gcc rot.c -O2 -o rot.exe" tulee sen kooksi 'pöyristyttävät' 15,5 kilotavua. Komennolla "gcc -s rot.c -O2 -o rot.exe" koko on yhä 'aivan liian suuri' 5,5kt.
Miten saisin exen koon vieläkin alaspäin?
(Mod. edit. Koodisi on kieltämättä rumaa, mutta leiskaa sillä ei silti saa rikkoa. Eli välejä lisätty.)
Voisi ehkä riippua mitä sulla on includessa siinä?
Mä käänsin ton sun ohjelmas komennolla gcc -s -o2 -o rot.exe rot.c ja mukana oli #include <stdio.h>. Koko oli 6,0kB.
kayttaja-4976: includaan vain stdion
TGunner: 5,5kt tai 6,0kt on aika paljon tollasesta, etenkin kun suurin osa koosta on turhaa.
No se on nyt vaan niin.
C:llä tekemällä ja Windows-ohjelmana tuskin saat sitä pienemmäksi. Assembly voisi mahdollistaa vielä pienemmän koon. COM-ohjelmana (reaalitilan DOS-ohjelmana, eikös se ole) voit yrittää, jos sellainen kelpaa ja sopii tarkoitukseen. Se pitäisi siis kaiketi tehdä Assemblylla.
Oli vähän tylsää, väänsin assemblyllä vastaavan ohjelman (http://blaze.dyndns.ws/~blaze/rot13.asm jos joku tarvii).
Tuo (stripattu) asmitoteutus on tosiaan noin kuus kertaa pienempi, kuin -Os -s C-versio (joka on muuten sekin Linux-ELFfinä melkein puolet Windows-PE:tä pienempi :o), taitavampi koodaaja sais varmaan vieläkin pienempään tilaan.
-rwxr-xr-x 1 blaze users 3008 2007-02-27 03:03 ref -rwxr-xr-x 1 blaze users 548 2007-02-27 03:08 rot13
Johtopäätös: C-kääntäjä tekee bloatteja binäärejä.
Cygwinin gcc:llä 2560 tavua. Lcc-kääntäjällä noin 9 kt.
Joku näistä käyttää dll-tiedostoa tukenaan. Lukija saa itse arvata mikä.
Johtopäätös 2: Leluohjelmat kannattaa tehdä skriptikielillä.
Kiitos vastauksista, hex-edittorillakin näkee WIN-binääreissä olevaa turhaa tilankäyttöä, valitettavasti sitä ei näköjään saa poistettua helpolla tavalla.
Blaze: tiedän että assemblyllä saa tehtyä pikkuohjelmat oikeasti pienikokoisiksi
Kopeekka: skriptikielet eivät ole yhtä kivoja kuin C
Aihe on jo aika vanha, joten et voi enää vastata siihen.