Autor | Zpráva | ||
---|---|---|---|
Anonymní Profil * |
#1 · Zasláno: 1. 11. 2004, 10:02:21
ako si pozriem zdrojak progrmu, ktory je naprogramovany v nejakom jazyku typu C, python pascal, C++, delphi, ........ ??
a ako sa číta "C#" |
||
Hugo Profil * |
#2 · Zasláno: 1. 11. 2004, 11:13:30
Pokud mas ten program uz zkompilovany, tak si ho neprectes. Jinak staci nejaky textovy editor.
C# - C sharp |
||
Časová prodleva: 26 dní
|
|||
pyty Profil |
#3 · Zasláno: 27. 11. 2004, 18:01:41
takze ked je zkompilovany neje ziadna sanca na jeho pozreie ?
zdrojak TotalCommander alebo bulancov si uz nepozriem ? viem ze niektory vyvojari davaju na net aj zdrojaky ale nie vsetci.... a ako potom vidi zdroj program co ho vyhodnocuje ? |
||
thingwath Profil * |
#4 · Zasláno: 27. 11. 2004, 19:14:06
Zkompilovaný kód se do původního zdrojáku už převést nedá. Jsou sice nějaké dekompilátory pro konkrétní jazyky (které dokáží do určité míry kód rekonstruovat), ale originál se z toho dát dohromady nedá.
pyty: Ta poslední otázka? Odpověděl bych, pokud bych ji pochopil. Rozdíl je u interpretovaných jazyků, takže skript z Pythonu, pokud není převedený do bajtkódu nebo přímo windows binárky nebo elfu, se dá normálně zobrazit v textovém editoru. |
||
pyty Profil |
#5 · Zasláno: 27. 11. 2004, 19:59:46
html, javascript vyhodnot //resp. zobrazi// prehliadac
php, asp... program na serveri tak aj program spusteny v win by malo nieco vyhodnotit nie ? |
||
thingwath Profil * |
#6 · Zasláno: 27. 11. 2004, 20:08:01
Ano, váš procesor. Zkompilovaný spustitelný soubor obsahuje instrukce pro procesor. Ty se dají snadno převést do Assembleru, ale to nijak moc nepomůže.
|
||
Anonymní Profil * |
#7 · Zasláno: 27. 11. 2004, 20:16:10
ahaa takže programy v C,python,pascal..... vyhodnocuje procesor ..::.. mmm
ale na napr. javu potrebujem program ci nie ? |
||
thingwath Profil * |
#8 · Zasláno: 27. 11. 2004, 20:23:03
Ty programy jsou zkompilované do tvaru instrukcí pro procesor. Python sem netahejte, to je primárně interpretovaný jazyk (jako třeba PHP).
Java (a .NET) je trochu zvláštní případ. Ta se sice taky kompiluje, ale do takzvaného bajtkódu, který ovšem má trochu jiný tvar než obvyklá spustitelná binárka třeba pro windows (.exe). Výhoda je pak ta, že to není závislé na konkrétním procesoru, ale je potřeba mít interpret (v javě se nazývá VM, virtuální stroj), který program vykonává. |
||
pyty Profil |
#9 · Zasláno: 28. 11. 2004, 09:35:11
takze ked nieco naprogramujem do c#, program//??// mi to prevedie do binarnej podoby //1,0// a potom to sparcuje procesor ? a nemoze sa to z binarnej podoby dostat spat ?
nepoznate o tom nejaky clanok? red by som si nieco precital. nie konkretny, ale zaoberajuci sa VSEOBECNE touto problematikou. nie ze by som sa chcel v blizkej dobe ucit programovat v niecom veciom ako PHP alebo javascript, ale dost ma to zaujima, a zaujimalo uz od mala :-) |
||
thingwath Profil * |
#10 · Zasláno: 28. 11. 2004, 10:19:54
C# se kompiluje do toho dotnetích bajtkódu, který má nějakou zkratku, asi Common Language Runtime, nebo něco takového. Prostě jako Java :-)
Jinak, binárně máte v počítači samozřejmě úplně všechno. NIcméně některé věci jsou uloženy jako textové (tedy s daty se pracuje po jednom bajtu, který každý představuje jeden znak), jiné jako binární, z nichž vám textový editor nic neukáže, protože čtené po bajtu nedávají smysl. Zvolíme lepší příklad a napíšeme program v C :-) Napíšeme si něco, dejme tomu tohle
Teď máme zdrojový kód programu, který je nám ale na nic, protože mu rozumíme my, ale procesor ne. Proto spustíme kompilátor, který nám program právě do takové podoby převede. Výsledek (dejme tomu linuxová binárka - říká se jim ELF - spustitelný linkovatelný formát) bude vypadat v assembleru takto:
Je to výstup GCC kompilátoru, redakčně malinko kráceno. Nyní je kód už výrazně nepřehlednější a je mnohem těžší z něj dostat co vlastně původně dělal, že? Výalednou binárku sem nepošlu, takže se za domácí úkol v něčemschopném zobrazovat hexadecimálně podívejte na nějakou vlastní :-) Nyní, když budeme chít program spustit, tak udělá nějaké techtlemechtle operační systém (vytvoří nový proces, alokuje paměť, přidělí mu nějaký strojový čas ...). Pak si procesor žádá jednotlivé instrukce programu (které jsou nataženy v paměti) a vykonává je. Dokud se neprobudí plánovač a nepřidělí procesor zase někomu jinému :-) U PHP je to o něco složitější. Tam si napřed náš skript (jako normální textový soubor) vyžádá interpret PHP. Interpret je napsaný v C a má takový tvar jako program výše. Interpret si také bere instrukci po instrukci a zpracovává je. Interpret tak v podstatě napodobuje chování procesoru, ale na vyšší úrovni. Pro vykonání PHP skriptu tak samozřejmě musíme mít procesor, ale ten náš skript zpracovává prostřednictvím programu interpetu. Proto je taky PHP o mnoho pomalejší než kompilovaný program psaný v C. Z binární podoby dokážeme dát dohromady přibližně uvedený tvar v assembleru, ale uznáš, že ten nám moc platný nebude. |
||
Časová prodleva: 19 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0