Brodoplovac,
Procesor je u stanju da neposredno izvršava jedino program na mašinskom jeziku (koji se zato tako i zove, jer je jezik mašine), a to je jezik nula i jedinica.
Problem je u tome što taj jezik nije blizak čoveku. Jako je teško pisati program na mašinskom jeziku i održavati ga. Zbog toga niko ne piše programe na taj način. Oni koji kažu da su mašinski programeri zapravo ne rade na mašinskom jeziku, nego na asembleru. To je jezik blizak mašinskom, ali gde se mašinske naredbe ne zapisuju kao nizovi nula i jedinica (svaka naredba je niz nekoliko bajtova), već preko mnemonika, koji su zapravo skraćenice nekih engleskih reči. Primer jedne tako zapisane naredbe je
Code:
move ax, 365
koja znači da se broj 365 upiše u registar ax.
Međutim, taj jezik je čvrsto vezan za skup instrukcija konkretnog procesora, a i za ostale karakteristike, kako računara, tako i operativnog sistema. Taj problem se prevazilazi takozvanim višim ili mašinski nezavisnim jezicima, koji su još bliži čoveku. Dakle, osim što ti jezici nude mogućnost da program preneseš sa PC-ja na Mac (mada u praksi to nije baš uvek tako jednostavno) još jedna korist od viših programskih jezika je ta što je u njima još lakše raditi. Evo programa za sabiranje dva cela broja pisanog na višem programskom jeziku C.
Code:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int x, y;
scanf("%d%d", &x, &y);
printf("Zbir je %d\n", x + y);
return EXIT_SUCCESS;
}
Da bi se rogram pisan na jeziku koji nije mašinski mogao izvršiti, mora se prevesti na mašinski jezik. Proces prevođenja je automatizovan, tj. obavlja ga (na zahtev programera) poseban program koji se zove prevodilac ili kompajler. Priloženi program možeš pomoću bilo kog C prevodioca da prevedeš, a potom i izvršiš, nezavisno od toga koji računar i operativni sistem imaš. Dobijeni mašinski oblik je vezan za tip računara i operativni sistem, ali je oblik ovog programa na jeziku C potpuno prenosiv.
Evo kako isti taj program izgleda u mašinskom obliku:
Code:
4D 5A 90 00 03 00 00 00 04 00 00 00 FF FF 00 00 B8 00 00 00 00 00 00 00 40 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00
0E 1F BA 0E 00 B4 09 CD 21 B8 01 4C CD 21 54 68 69 73 20 70 72 6F 67 72 61 6D 20 63 61 6E 6E 6F
74 20 62 65 20 72 75 6E 20 69 6E 20 44 4F 53 20 6D 6F 64 65 2E 0D 0A 24 00 00 00 00 00 00 00 50
45 00 00 4C 01 05 00 74 43 6C 4C 00 00 00 00 00 00 00 00 E0 00 0F 03 0B 01 02 38 00 01 02 38 00
14 00 00 00 02 00 00 30 11 00 00 00 10 00 00 00 20 00 00 00 00 40 00 00 10 00 00 00 02 00 00 04
00 00 00 01 00 00 00 04 00 00 00 00 00 00 00 00 60 00 00 00 04 00 00 76 EF 00 00 03 00 00 00 00
00 20 00 00 10 00 00 00 00 10 00 00 10 00 00 00 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00
50 00 00 00 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 2E 74 65 78 74 00 00 00 B4
0B 00 00 00 10 00 00 00 0C 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 60 00 50 60 2E
64 61 74 61 00 00 00 2C 00 00 00 00 20 00 00 00 02 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00
00 00 00 40 00 30 C0 2E 72 64 61 74 61 00 00 80 01 00 00 00 30 00 00 00 02 00 00 00 12 00 00 00
00 00 00 00 00 00 00 00 00 00 00 40 00 30 40 2E 62 73 73 00 00 00 00 C4 00 00 00 00 40 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80 00 40 C0 2E 69 64 61 74 61 00 00 00
03 00 00 00 50 00 00 00 04 00 00 00 14 00 00 00 00 00 00 00 00 00 00 00 00 00 00 40 00 30 C0 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55
89 E5 83 EC 08 A1 F8 50 40 00 C9 FF E0 66 90 55 89 E5 83 EC 08 A1 EC 50 40 00 C9 FF E0 66 90 55
89 E5 53 83 EC 34 C7 04 24 50 11 40 00 E8 3D 0B 00 00 83 EC 04 E8 E5 02 00 00 E8 50 07 00 00 8D
45 F0 C7 45 F0 00 00 00 00 89 44 24 10 A1 00 20 40 00 C7 44 24 04 04 40 40 00 C7 04 24 00 40 40
00 89 44 24 0C 8D 45 F4 89 44 24 08 E8 7E 0A 00 00 A1 08 40 40 00 85 C0 75 4A E8 78 0A 00 00 8B
15 04 20 40 00 89 10 E8 A3 04 00 00 83 E4 F0 E8 DB 06 00 00 E8 66 0A 00 00 8B 00 89 44 24 08 A1
04 40 40 00 89 44 24 04 A1 00 40 40 00 89 04 24 E8
Svaki znak (slovo ili cifra) predstavlja grupu od četiri binarne cifre, tj. svaki par spojenih znakova predstavlja jedan bajt.
Oblik programa u kome ga je pisao programer (u ovom slučaju, oblik na C-u) se zove izvorni kod, a prevedeni oblik je binarni ili izvršni kod. Da bi se program izvršio, dovoljno je imati njegov mašinski oblik (exe fajl), dok izvorni kod za izvršavanje nije potreban. Komercijalni softver se tipično isporučuje na taj način, npr. zbog unesenih tehnoloških tajni, čime je njegovo analiziranje značajno otežano. Ako program sadrži važne tehnološke tajne, njegovo analiziranje se može dodatno otežati (npr. programima kao što je obsfurcator), ali nikada i potpuno onemogućiti.
FOSS zajednica izvorni kod programa definiše kao najpodesniji oblik za njegovo menjanje.
[Ovu poruku je menjao Nedeljko dana 19.08.2010. u 10:01 GMT+1]
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.