În programare. un ansamblu menționat la posibilitatea de a introduce compilator pentru a încorpora codul de nivel scăzut scris în limbaj de asamblare. într-un program scris într-un limbaj de nivel înalt. de exemplu, Cu sau Ada. Folosind inserții de asamblare pot avea următoarele obiective:
- Optimizare. În acest scop, cod de asamblare scrise de mână, care pune în aplicare cele mai critice în termeni de performanță a algoritmului. Acest lucru permite programatorului să folosească pe deplin ingeniozitatea lor, fără a se limita la constructele compilator.
- Accesul la instrucțiunile specifice ale procesorului. Unele procesoare suporta instrucțiuni specifice, cum ar fi comparații cu schimbul și de testare și-set - instrucțiuni care pot fi utilizate pentru a pune în aplicare semafoarelor și alte sincronizare primitivele și interblocare. Practic, toate procesoarele moderne au aceste instrucțiuni sau similare, deoarece acestea sunt necesare pentru punerea în aplicare a multitasking. Instrucțiuni speciale pot fi găsite în sistemul de comandă cu următoarele procesoare: SPARC VIS. Intel MMX și SSE. Motorola AltiVec.
- apeluri de sistem. limbaje de programare de nivel înalt rareori oferă posibilitatea de a efectua apeluri de sistem directe, codul de asamblare [1] este utilizat în aceste scopuri.
Optimizarea EXEMPLU și utilizarea instrucțiunilor speciale procesor
Acest exemplu introduce o programare limbaj de asamblare D. pune în aplicare calculul x tan, utilizează instrucțiunile de arhitectura x86 FPU. Acest cod rulează mai rapid decât codul care ar fi generat de compilator. De asemenea, am folosit fldpi manual. care încarcă asigură cea mai apropiată de numărul π arhitectura x86.
EXEMPLUL syscall
Apel către sistemul de operare în mod direct, de regulă, nu poate fi în prezența memoriei protejate. OS ruleaza pe un nivel privilegiat (modul nucleu) decât utilizator (modul de utilizare). întreruperi software sunt folosite pentru a face cereri către sistemul de operare. Rareori limbaje de nivel înalt să sprijine o astfel de posibilitate, astfel încât interfețele de apel de sistem sunt scrise folosind inserții de asamblare [1].
Următorul exemplu conține un limbaj SI interfață apel de sistem este scris folosind sintaxa ATT GNU Assembler. Pentru a începe, ia în considerare formatul inserturi de asamblare cu un exemplu simplu:
ID-asm și __asm__ echivalente. Un alt exemplu este un insert simplu:
Exemplu de realizare a interfeței sistemului de apel: