Soros összeszerelés gcc

A C ++ nyelvet támogat inline szerelvény, amely tükrözi a köznyelv.
Azonban ez a funkció mélyen egyes specifikus compiler / architektúra, így a szokásos kevés és korlátozott a következőkre:







7.4 Az ASM nyilatkozatot [dcl.asm]
ASM nyilatkozat formájában van
ASM-meghatározás:
ASM (string-szó);
Az ASM nyilatkozatot feltételesen támogatott; értelmét megvalósítástól függ. [Megjegyzés: Általában használják adatot átadni megvalósítása révén egy szerelő. végen jegyzet]

C szabvány inline szerelés nem határozza meg, és rögzíti, hogy csak az adott listát a közös kiterjesztések:


Legnépszerűbb fordítóprogramok támogatja ezt a funkciót egy vagy más formában.
MSVC fordító támogatja őket a 32 bites, de nem a 64 bites kódot. Továbbá, amint az látható, MSVC szúr szerelő szintaxis eltér a szabványban meghatározott.

test_asm.s így a fájl (kiterjesztése a hagyományos assembly fájlokat GCC .s):

Ez a modell meglehetősen természetesen vezet a logika szerelvény betétek, amelyeket GCC.
GCC-betétek, miután a potenciális makro szerelő betét szöveget közvetlenül a kimeneti fájl assembly nyelven.






Példa (beton szintaxis assembler betétek, lásd alább.)

Mint látható, a GCC betét a kódot kifejezetten.

A modell által használt GCC számos fontos tulajdonságait.

Először is, a fordító szinte nincs „kémek” a megadott assembler programozó beágyazási. Ő, ha szükséges, elvégzi a makro (lásd. Alább), de általában közvetíti az assembler kód szinte „ahogy van”, és szinte nincs ötlete, hogy mi történik odabent. Különösen, hibadetektálás foglalkozik assembler (GCC transzferek a programozó a assembler hibaüzenetek).

Másodszor, ennek következtében a szerelő, hogy helyezzen be egy fordító (különösen optimalizáló) egyetlen paranccsal átlátszatlan (fekete doboz). Minden szükséges információt róla, hogy a készülék együttműködik a környezet, a fordító kap közvetlenül a programozó kifejezetten megadva operandusok szerelő betétek (meghatározza a kommunikációs kódban változó C ++, és egy lista a felhasznált erőforrások (regiszterek, és így tovább. D.) és változások ( állami zászló, a memória és így tovább. d.) assembly betét), de nem olyan részletes venni a szöveg assembler betétek (ami nem). Technikailag szólva, GCC biztosít a programozó egy interfészt biztosít a Register Transfer Language. Felelős hamis információkat meghatározott operandusok terheli a programozó.
Ezen belül korlátok, a fordító szabad kezelni inline szerelvény (valamint más csapatok), ahogy akar: a mozgás, a kettős (pl helyett inline-funkciókat.), Sőt dobja el, ha az optimalizáló jönne egy ilyen döntés.




Kapcsolódó cikkek