Kezdőoldal » Számítástechnika » Programozás » A gépi nyelv hogyan tud...

A gépi nyelv hogyan tud lefutni, és elindítani a processzort?

Figyelt kérdés
Mi alapján tudja egy program (vagy inkább a gépi nyelv), elindítani, vagy befolyásolni a processzor, vagy a többi alkatrész működését?
2023. jan. 5. 17:14
1 2 3 4
 1/33 A kérdező kommentje:

Az Assembly-hez is kell assembler. De a gépi nyelvhez nem kell semmi?


Mitől függ, hogy lefut-e vagy sem?

2023. jan. 5. 17:14
 2/33 anonim ***** válasza:
42%

Röviden és egyszerűsítve: minden futó program a processzoron gépi kódban fut (még a pythos is, csak ott ugye ez az interpreter). A gépi kód bináris számokból áll (0-k és 1-ek), melyek a memóriában vannak (RAM). A processzor innen szépen sorban olvassa be az utasításokat és feldolgozza őket. A feldolgozás azt jelenti, hogy veszi az utasítást, annak az értéke alapján pedig a megfeleő utasításhoz tartó műveletet (pl. összeadás) elvégzi. A műveletekhez regiszereket használ belül az operandusok tárolására.

Tehát nem a gépi nyelv indítja el a processzort, hanem a processzor dolgozza fel az utasításokat és hajtja őket végre. Ezek az utasítások amúgy egyszerűek, pl. memóriába írás/olvasás, négy alapművelet, stb.

A többi alkazrész kezelése történhet pl. memóriacímzéssel. Pl. PCI buszra írással/olvással, amit az adott eszköz figyel

2023. jan. 5. 17:28
Hasznos számodra ez a válasz?
 3/33 anonim ***** válasza:

A gépi nyelv egy olyan nyelv, amelyet a számítógép processzora képes értelmezni és végrehajtani. A gépi nyelvben írt utasításokat a processzor közvetlenül végrehajtja, ezért a gépi nyelv a leggyorsabb és leghatékonyabb módja a számítógép vezérlésének.

A gépi nyelvben írt programokat általában fordítóprogramok segítségével fordítják át olyan nyelvekbe, amelyeket az emberek könnyebben tudnak olvasni és írni, mint például a C++ vagy a Python. A fordított programot aztán lehet futtatni a számítógépen, és a processzor végrehajtja az utasításokat.

A processzor és a számítógép többi alkatrésze között van egy olyan adatcsere, amelynek segítségével a processzor el tudja indítani és irányítani a többi alkatrész működését. A processzor általában egy olyan "vezérlő egység" (control unit), amely irányítja a számítógép működését, és végrehajtja az utasításokat, amelyeket a gépi nyelvben írt programok adnak neki.

A processzor általában egy olyan úgynevezett "memória-címekkel" dolgozik, amelyek megadják, hogy melyik memóriacímekben találhatóak az adatok, amelyeket a processzor szükségesnek lát. A processzor el tudja indítani a többi alkatrész működését azáltal, hogy elküldi nekik az utasításokat és az adatokat, amelyeket szükségesnek lát a működésükhöz.

A processzor különféle úgynevezett "vezérlő áramkörökkel" is rendelkezik, amelyek segítségével tudja irányítani a többi alkatrész működését. Például a processzor tudja vezérelni a számítógép háttértárának működését, az adatok áramlását a memória között, és más fontos funkciókat is.

néhány példa a gépi nyelvben írt utasításokra:


ADD: Az "ADD" utasítás azt jelenti, hogy a processzor két számot össze kell adnia, és az eredményt el kell tárolnia valahol a memóriában.


MOV: Az "MOV" utasítás azt jelenti, hogy a processzor egy adatot kell áthelyeznie valahonnan valahova a memóriában.


CMP: Az "CMP" utasítás azt jelenti, hogy a processzor két számot kell összehasonlítania, és meg kell határoznia, hogy melyik szám nagyobb.


JMP: Az "JMP" utasítás azt jelenti, hogy a processzor a program futásának egy másik pontjára kell ugrania, és onnan kell folytatnia a végrehajtást.


Ezek csak néhány példa a gépi nyelvben létező utasításokra. A gépi nyelvben sokféle utasítás létezik, és a processzor képes végrehajtani számos más utasítást is.


ADD R1, R2, R3

Ez az utasítás azt jelenti, hogy a processzor két számot (R2 és R3) össze kell adnia, és az eredményt el kell tárolnia R1-ben.


def add(x, y):

return x + y


print(add(3, 4))

Ez a Python-ban írt program egy "add" nevű függvényt definiál, amely két számot vesz át, és összeadja őket. Majd a program a függvényt meghívja, és a "3" és a "4" számokat adja át neki, aminek az eredménye "7" lesz. A program végül kiírja az eredményt a képernyőre.

2023. jan. 5. 17:55
Hasznos számodra ez a válasz?
 4/33 A kérdező kommentje:

Jó, de a processzor mért, és hogyan dolgozza ezeket föl? Pl. mért indul el a feldolgozása bizonyos parancsokra, és másokéra mért nem?


A gépi nyelv hogy tud lefutni? Mi alapján működik a gépi nyelv?


Két szám összeadása milyen parancsokkal működne?

2023. jan. 5. 18:55
 5/33 A kérdező kommentje:
*hogy tud lefutni az adott processzoron, és máson mért nem?
2023. jan. 5. 18:56
 6/33 anonim ***** válasza:
100%

A processzor áramkör (nagyon bonyolult egyébként, de most ettől tekintsünk el). Mint mondtam, sorban ovassa be a parancsokat és a parancs alapján tudja, hogy mi kett csinálni. Sokféle parancs van, pl. összeadás. Ennek van egy egyedi azonosítója, pl. az, hogy a 4 bájtos parancs első bájta 10 értékű. Tehát, a processzor egy komparátorba küldi a parancsot, és ha igaz, akkor az összeadás áramkör lesz aktív, ha hamis, akkor pedig nem (pontosabban, sok parancs van, és az lesz aktív amelyre igazat ad vissza). Az összeadás áramkör pedig címzéssel a regiszerekből kiveszi az értékeket, összeadja őket és visszaírja a célregiszterbe.

A miért indul el a feldolgozás: folyamatosan van feldolgozás, maximum ez a feldolgozás egy ún. NOP, azaz no operation, vagyis üresjárat. Amikor a processzor nem csinál semmit, akkor ezeket pörgeti folyamatosan (és ezt úgy csináltáék meg, hogy keveset fogyasszon).

Egy gépi kódban adott bináris számok adott parancsot jelentenek, más processzorban már a gépi kód, ugyanaz a bináris más parancsot jelent (vagy értelmetlen

2023. jan. 5. 19:05
Hasznos számodra ez a válasz?
 7/33 A kérdező kommentje:
Ja és még annyi, hogy akkor az assembly is lassabb a gépi nyelvnél, mert mindig lefut az assembler? Ez mindig lefut, akárhányszor elindítjuk a már elkészített programunkat is? Pl. egy játéknál is mindig lefut az interpreter, amikor megnyitjuk?
2023. jan. 5. 19:06
 8/33 anonim ***** válasza:
54%

Gépi nyelv nem létezik. Te inkább gépi kódra gondolhattál.


A gépi kód nem indítja el a processzort. Nem is lenne erre képes, mert a gépi kód a processzoron hajtódik végre, annak meg ehhez, mármint a végrehajtáshoz már működnie kellene.


A processzor a gép bekapcsolása pillanatában feszültség alá kerül. Ezzel egy időben a processzor órajel generátora is feszültséget kap és kitol magából egy impulzust, egy négyszögjelet. Ez az órajel hajtja meg a processzort.

Minden processzor egy állapotgép. van nekik valahány regiszterük, számolóművük (ALU), adat, cím és vezérlő sinük. Ezek mind kisebb-nagyobb áramköri elemek, amelyek egymással kapcsolatban állnak, egymás működésére hatnak.


Az állapotuk akkor változik meg, amikor az órajel beérkezik, ez ugyanis "bemozgatja" a részeket. Elkezdődik egy adott műveletsor (boot). A memória meghatározott részéből adat olvasódik be a processzorba, az az adat pedig beállítja az állapotgépet (a procit) valamilyen másféle helyzetbe. A következő órajel meg azt a beállított helyzetet nyugtázza. Na, ez a folyamat maga a program végrehajtás.

2023. jan. 5. 19:07
Hasznos számodra ez a válasz?
 9/33 anonim ***** válasza:
52%
Nem, az assembler egyszer fut le, utána már binárisod van.
2023. jan. 5. 19:09
Hasznos számodra ez a válasz?
 10/33 anonim ***** válasza:
100%

"Ja és még annyi, hogy akkor az assembly is lassabb a gépi nyelvnél, mert mindig lefut az assembler? "


Nem. Natív nyelvek esetében nincs olyan, mint a pythonnál, vagy más interpreteres nyelvnél.

Natívnál maga a gépi kód kerül be a memóriából a processzorba. Ezért is gyorsabb.

A gépi kódot meg az assembler vagy más fordító (compiler) állítja elő a forrásból.

2023. jan. 5. 19:15
Hasznos számodra ez a válasz?
1 2 3 4

További 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!