Limbaj mașină
Codul mașină este un program de calculator scris în limbaj mașină. Acesta utilizează setul de instrucțiuni al unei anumite arhitecturi de calculator. De obicei, este scris în binar. Codul mașină este cel mai mic nivel de software. Alte limbaje de programare sunt traduse în cod mașină, astfel încât calculatorul să le poată executa.
O instrucțiune indică procesului ce operațiune trebuie să efectueze. Fiecare instrucțiune este alcătuită dintr-un opcode (cod de operație) și operand (operanzi). Operanzii sunt, de obicei, adrese de memorie sau date. Un set de instrucțiuni este o listă de coduri operaționale disponibile pentru un calculator. Codul mașină este ceea ce reprezintă codul de asamblare și alte limbaje de programare compilate sau interpretate.
Constructorii de programe transformă codul în alt limbaj sau în cod mașină. Codul mașină este uneori numit cod nativ. Acesta este folosit atunci când se vorbește despre lucruri care funcționează doar pe anumite computere.
Scrierea codului mașină
Codul mașinii poate fi scris în diferite forme:
- Utilizarea unui număr de comutatoare. Acest lucru generează o secvență de 1 și 0. Acest lucru a fost utilizat în primele zile ale calculatoarelor. Începând cu anii 1970, nu mai este utilizată.
- Utilizarea unui editorhexagonal. Acest lucru permite utilizarea codurilor operaționale în locul numărului comenzii.
- Utilizarea unui asamblor. Limbajele de asamblare sunt mai simple decât codurile operaționale. Sintaxa lor este mai ușor de înțeles decât limbajul mașinii, dar mai dificilă decât limbajele de nivel înalt. Asamblatorul va traduce singur codul sursă în cod mașină.
- Utilizarea unui limbaj de programare de nivel înalt permite realizarea de programe care utilizează un cod mai ușor de citit și de scris. Aceste programe sunt traduse în cod mașină. Traducerea poate avea loc în mai multe etape. Programele Java sunt mai întâi optimizate în bytecode. Apoi sunt traduse în limbaj mașină atunci când sunt utilizate.
Panoul frontal al unui minicalculator timpuriu, cu comutatoare pentru introducerea codului mașinii
Instrucțiuni tipice de cod mașină
Există mai multe tipuri de instrucțiuni care se găsesc de obicei într-un set de instrucțiuni:
- Operații aritmetice: Adăugare, scădere, înmulțire, împărțire.
- Operații logice: Conjuncție, disjuncție, negație.
- Operații care acționează asupra unor biți individuali: Deplasarea biților la stânga sau la dreapta.
- Operații care acționează asupra memoriei: copierea unei valori dintr-un registru în altul.
- Operații care compară două valori: mai mare decât, mai mic decât, egal.
- Operații care combină alte operații: adunare, comparație și copiere dacă este egală cu o anumită valoare (ca o singură operație), salt la un anumit punct din program dacă un registru este zero.
- Operații care acționează asupra fluxului programului: salt la o adresă.
- Operații care convertesc tipuri de date: de exemplu, convertirea unui număr întreg pe 32 de biți într-un număr întreg pe 64 de biți, convertirea unei valori în virgulă mobilă într-un număr întreg (prin trunchiere).
Multe procesoare moderne utilizează microcoduri pentru unele dintre comenzi. Comenzile mai complexe tind să îl folosească. Acest lucru se face adesea în cazul arhitecturilor CISC.
Instrucțiuni
Fiecare procesor sau familie de procesoare are propriul set de instrucțiuni. Instrucțiunile sunt modele de biți care corespund diferitelor comenzi care pot fi date mașinii. Astfel, setul de instrucțiuni este specific unei clase de procesoare care utilizează (în mare parte) aceeași arhitectură.
Proiectele de procesoare mai noi includ adesea toate instrucțiunile unui predecesor și pot adăuga instrucțiuni suplimentare. Uneori, un proiect mai nou va întrerupe sau va modifica semnificația unui cod de instrucțiuni (de obicei pentru că este necesar pentru noi scopuri), afectând compatibilitatea codului; chiar și procesoarele aproape complet compatibile pot prezenta un comportament ușor diferit pentru unele instrucțiuni, dar acest lucru reprezintă rareori o problemă.
Sistemele pot diferi și prin alte detalii, cum ar fi aranjamentul memoriei, sistemele de operare sau dispozitivele periferice. Deoarece un program se bazează în mod normal pe astfel de factori, sisteme diferite nu vor rula de obicei același cod mașină, chiar dacă se utilizează același tip de procesor.
Majoritatea instrucțiunilor au unul sau mai multe câmpuri de cod operațional. Acestea specifică tipul instrucțiunii de bază. Alte câmpuri pot indica tipul operanzilor, modul de adresare și așa mai departe. Pot exista, de asemenea, instrucțiuni speciale care sunt conținute în codul operațional propriu-zis. Aceste instrucțiuni se numesc immediates.
Proiectele de procesoare pot fi diferite și în alte moduri. Diferite instrucțiuni pot avea lungimi diferite. De asemenea, ele pot avea aceeași lungime. Faptul că toate instrucțiunile au aceeași lungime poate simplifica proiectarea.
Exemplu
Arhitectura MIPS are instrucțiuni cu o lungime de 32 de biți. Această secțiune conține exemple de cod. Tipul general de instrucțiune se află în câmpul op (operație). Este vorba de cei mai înalți 6 biți. Instrucțiunile de tip J (jump) și I (immediate) sunt date integral de op. Instrucțiunile de tip R (registru) includ câmpul funct. Acesta determină operațiunea exactă a codului. Câmpurile utilizate în aceste tipuri sunt: - câmpuri de tip fct:
6 5 5 5 5 5 5 6 biți [ op | rs | rt | rd |shamt| funct] R-tip [ op | rs | rt | adresă/immediată] I-tip [ op | adresă țintă ] J-tiprs, rt și rd indică operanzii registrului. shamt indică o valoare de decalare. Câmpurile adresă sau imediat conțin direct un operand.
Exemplu: Adăugați registrele 1 și 2. Se plasează rezultatul în registrul 6. Acesta este codificat:
[ op | rs | rs | rt | rd |shamt| funct] 0 1 2 2 6 0 32 zecimal 000000 00001 00010 00110 00000 100000 binarÎncărcați o valoare în registrul 8. Luați-o din celula de memorie aflată la 68 de celule după locația listată în registrul 3:
[ op | rs | rs | rt | address/immediate] 35 3 8 68 zecimal 100011 00011 01000 00000 00001 000100 binarTreceți la adresa 1024:
[ op | adresa țintă ] 2 1024 zecimal 000010 00000 00000 00000 00000 10000 000000 binarPagini conexe
- Sistemul numeric binar
- Calculatoare cuantice
- Set de instrucțiuni
- Calculator cu set redus de instrucțiuni
Întrebări și răspunsuri
Î: Ce este codul mașinii?
R: Codul mașinii este un program de calculator scris în limbajul mașinii, care utilizează setul de instrucțiuni al unei anumite arhitecturi de calculator și este de obicei scris în binar.
Î: Care este cel mai mic nivel de software?
R: Codul mașină este cel mai mic nivel de software.
Î: Cum sunt executate alte limbaje de programare de către calculatoare?
R: Alte limbaje de programare sunt traduse în cod mașină, pe care calculatorul îl poate executa.
Î: Din ce constă o instrucțiune în codul mașină?
R: O instrucțiune în cod mașină este formată dintr-un opcode (cod de operație) și operand (operanzi). Operanzii sunt, de obicei, adrese de memorie sau date.
Î: Ce este un set de instrucțiuni?
R: Un set de instrucțiuni este o listă de coduri operaționale disponibile pentru un calculator.
Î: Ce fac constructorii de programe cu codul?
R: Constructorii de programe transformă codul în alt limbaj sau în cod mașină.
Î: Care este un alt nume pentru codul mașină?
R: Codul mașină este uneori numit cod nativ, utilizat atunci când se vorbește despre lucruri care funcționează doar pe anumite calculatoare.