• Vol Jin
    #30
    Egy program vígan elfut egy számítógépen, amire megírják. Másikon nem. De egy ilyen program mindenre kiterjedően bonyolult, hogy minden hardverelemet kezelni tudjon. Ha már több program van, akkor célszerű egy operációs rendszer. Ez ad egyfajta keretet is a programoknak, amiknek nem kell foglalkozni a hardverrel. A különböző hardvereket a driverek illesztik az operációs rendszerhez. Így egy program, ha úgy vesszük, nem a számítógépen fut, hanem az operációs rendszeren. Képletesen egy program az operációs rendszer egy modulja lesz. Egy bővítmény. Ez nem igaz, viszont szemléltető. A lényeg, hogy az operációs rendszer egy környezetet biztosít a programoknak, egyfajta szabvány, hogyan kell kommunikálni a hardverekkel, hogyan nyitunk meg egy ablakot, stb. Például a programozónak nem kell azzal foglalkoznia, hogyan kerül egy ablak a monitorra, csak megadja a pozíciót, a méretet, meg a rajta lévő elemeket, mint a pipa helye, mi történjen, ha adott pontjára klikkelsz, stb. Ezekkel a a szabványos szintaktikákkal egyszerűbbek lesznek a programok, és egymással is tudnak kommunikálni.

    Tehát az első lépés, hogy az operációs rendszer is az ARM utasításkészletével legyen megírva. Ekkor egy x86-os program még mindig nem futna az ARM processzoron. A forráskódját, ami mondjuk c-ben van megírva vagy bármilyen programnyelven, teljesen automatikusan, egy fordítóprogram segítségével átfordították x86 utasításokra. A fordítóprogram neve compiler. Amire meg lefordították, az nyomják ki a CD-re. Annyi a teendő, hogy ezt az automatikus fordítást egy olyan compileren kell lefuttatni, ami nem x86-ra, hanem ARM gépikódra fordítja a magasabb szintű nyelven megírt programot.

    Tehát az operációs rendszert, a drivereket és a programokat is a forráskódból, ami a programozók munkája egy ARM kódra fordító compileren is át kell zavarni.

    Ez nem sokkal bonyolultabb feladat, mint MPEG-ből DivX-et csinálni.
    Persze kell a forráskód, meg a szoftvercégek hajlandósága, hogy ezt a teljesen automatizált folyamatot végrehajtsák.

    A Windows8 például x86-os, a Windows8 RT pedig ARM kódra van megírva. Annyi különbséggel, hogy a Windows8 tartalmazza a régi Windowsra írt programok futtatásához szükséges környezetet is, meg az új, kifejezetten csak Windows8-on futó programok környezetét is.

    Szóval, ha úgy írnak meg egy windowsos programot, hogy a régi verziókon is fusson, a Win8 RT-n meg sem mozdul. Ha meg úgy írják meg, hogy azon is fusson, akkor egy régi windowson nem fog futni.

    Az MS azt szeretné, ha áttérnének az új platformra a programok. Ilyenkor semmi akadája, hogy ARM és x86-os verzió is készüljön egy programból. Csak annyi a teendő, hogy két különböző compilernek is megadják a forráskódot.

    Ha az OS egy linux, akkor meg ARM-es linuxot kell telepíteni, és a forráskódot, ami szabad, átereszteni egy fordítóprogramon.


    Összefoglalva, ha valaki egy új programot ír, semeddig nem tart két verziót készíteni. Egy x86-ost és egy ARM-et. Pár kattintás az egérrel, és hátradőlés, amíg a fordító elszöszmöszöl, hogy kész a fordítás.

    A régi programoknál kérdéses, hogy mennyire üzletszerű elővenni a régi forráskódot és legyártani vele az ARM verziót.