inline szerelés

A programozás. pontban említett együttes beillesztésének a fordító, hogy beágyazza alacsony szintű kód írt assembly nyelven. egy írt program magas szintű nyelven. így például, Cu vagy Ada. Használata szerelő lapkák lehetnek céljai a következők:

  • Optimalizálás. Ebből a célból, kézzel írott assembler kód, amely megvalósítja a legkritikusabb a teljesítmény az algoritmus. Ez lehetővé teszi, hogy a programozó teljes mértékben felhasználják a találékonyság, nem korlátozódik a fordító konstrukciók.
  • Hozzáférés a konkrét utasításokat a processzor. Egyes processzorok támogatják konkrét utasításokat, mint összehasonlításokat a csere és a test-and-set - utasításokat lehet használni, hogy végre szemaforokat és más szinkronizációs primitívek és összekötése. Gyakorlatilag az összes modern processzorok ilyen vagy hasonló utasításokat, mivel azok végrehajtásához szükséges a multitasking. Különleges utasítások megtalálhatók a vezetési rendszer az alábbi processzorokkal: SPARC VIS. Intel MMX és SSE. Motorola AltiVec.
  • A rendszer kéri. Magas szintű programozási nyelvek ritkán biztosítja a lehetőséget, hogy közvetlenül a rendszer kéri, assembly [1] használjuk erre a célra.

Példa optimalizálása és a különleges processzor utasításokat

Ez a példa beszúr egy assembly nyelvű programozás D. végrehajtja a számítás tan x, használja az FPU x86 architektúra utasításokat. Ez a kód gyorsabban fut, mint a kód lenne a fordító által generált. Továbbá, az általunk használt kézi fldpi. betölti közelíti meg a számot π x86 architektúra.

példa syscall

Fellebbezés az operációs rendszer közvetlenül, mint általában, nem lehet jelenlétében védett memória. OS fut kiváltságos szinten (kernel mód), mint a felhasználó (user mode). szoftver megszakítások használják, hogy a kérelmeket az operációs rendszer. Ritkán a magas szintű nyelvek támogatják ezt a lehetőséget, így a rendszer hívás interfészek segítségével írják szerelő betétek [1].

Az alábbi példa egy nyelvet SI rendszer hívás interfész van írva szintaxis ATT GNU assembler. Kezdeni, úgy a szerelő betétek formátum egy egyszerű példát:

Azonosítók ASM és __asm__ egyenértékű. Egy másik példa egy egyszerű betét:

Példa megvalósításának a rendszer hívás interfész:

Kapcsolódó cikkek