Набір компіля́торів GNU (GNU Compiler Collection, GCC) — набір компіляторів для різних мов програмування. GCC — вільне програмне забезпечення, розроблене Фондом Вільних Програм під ліцензією GNU GPL та GNU LGPL, і є ключовою складовою набору знарядь розробки GNU (GNU development toolchain). Це стандартний компілятор для вільних Unix-подібних операційних систем, і деяких пропрієтарних систем, що з них розвинулись, наприклад Mac OS X.
GCC, під керуванням командного рядка | |
Тип | набір компіляторів |
---|---|
Розробник | The GNU Project |
Перший випуск | 23 травня 1987 |
Стабільний випуск | 12.1 (6 травня 2022 ) |
Платформа | кросплатформова програма |
Операційна система | декілька |
Мова програмування | C, , Ada |
Доступні мови | англійська, російська та багато інших |
Стан розробки | Активний |
Ліцензія | GPL |
Репозиторій | gcc.gnu.org/git/gcc.git |
Вебсайт | gcc.gnu.org |
|
Спочатку називався GNU Компілятор Сі, оскільки підтримував лише одну мову програмування — C. Пізніше був розширений для підтримки , Fortran, Java (компілятор GCJ), Ada, D, та інших.
Огляд
GCC започаткований Річардом Столменом у 1985 році як компілятор для проєкту GNU Project, аби мати компілятор який є вільним програмним забезпеченням. Його розробкою тісно опікувався Фонд Вільних Програм. Перша версія випущена навесні 1987, на кінець 1987 року з'явилася підтримка . GCC був першим незалежно створеним (не базувався на препроцесорі CFront Б'ярна Страуструпа) та першим власне компілятором (а не препроцесором у C) мови C++.
У 1997 група розробників, незадоволена повільним темпом і закритістю офіційної розробки GCC, створила проєкт EGCS (Experimental/Enhanced GNU Compiler System — Експериментальна/Покращена Збірка Компіляторів GNU), який об'єднав декілька експериментальних відгалужень GCC. Розробка EGCS з часом виявилась більш життєвою ніж GCC, і у квітні 1999 року EGCS оголошена офіційною версією GCC.
GCC тепер розробляється широкою групою розробників зі всього світу. Вона перенесена на більшу кількість типів процесорів та операційних систем ніж будь-який інший компілятор.
GCC є офіційним компілятором GNU, включно із GNU/Linux, прийнятий як основний компілятор і для інших операційних систем, таких як варіанти *BSD, Mac OS X, NeXTSTEP, і BeOS. Версія GCC під Microsoft Windows забезпечується проєктами MinGW та Cygwin, під DOS — проєктом (лише C/C++).
Мови
Версія 4.0.0 (випущена 20 квітня 2005), у типовій збірці підтримує наступні мови:
- Ада (GCC для Ada також відомий як )
- Сі
- (GCC для C++ також відомий як )
- Fortran (GCC для Фортрану також відомий як GFortran)
- Java (GCC для Java також відомий як GCJ. Видалений починаючи з версії GCC 7.1)
- Objective-C
- Go (GCC для Go, або gccgo) (починаючи з версії 4.6)
- D (GCC D) (починаючи з версії 9.1)
Підтримка CHILL припинена через недостатню активність розробки. Додаткові проєкти підтримують мови програмування Pascal, , , Mercury, VHDL, (PL/I) та Objective-C++.
Архітектури
GCC (версії 4.1) створює код для таких процесорних архітектур:
Менш відомі серед підтримуваних процесорів включають , , Atmel AVR, , , , , , , Intel i960, , , , , MMIX, , , , , , і . Окремими проєктами підтримується , PDP-10 і Z8000.
Структура
Зовнішній інтерфейс GCC є стандартом для компіляторів на платформі Unix. Користувач викликає управляючу програму, яка називається gcc. Вона інтерпретує аргументи командного рядка, визначає і запускає для кожного вхідного файлу свої компілятори потрібної мови, запускає, якщо необхідно, асемблер і компонувальник.
Компілятор кожної мови є окремою програмою, яка отримує початковий текст і породжує вихід на мові асемблера. Всі компілятори мають загальну внутрішню структуру:
- front end, який проводить синтаксичний розбір і породжує абстрактне синтаксичне дерево,
- і back end, який конвертує дерево в Register Transfer Language (RTL), виконує різні оптимізації, потім породжує програму на мові асемблера, використовуючи архітектурно-залежне зіставлення зі зразком.
GCC майже повністю написаний на Сі, хоча значна частина front-end для Ади написана на Ада.
В травні 2010 Керівний комітет GCC вирішив дозволити використовувати C++ компілятор для компіляції GCC. В серпні 2012 року комітет дозволив також використовувати C++ мову для розробки GCC і деякі складні структури даних (напр хеш-таблиці ітп) були переписані з допомогою C++ з використанням . Для компіляції GCC зараз вимагається компілятор мови C++, що підтримує щонайменше ISO/IEC C++03 стандарт.
Етапи компіляції програми мовою С на GCC
Компіляція програми на мові C за допомогою gcc передбачає такі послідовні етапи: препроцесор (prepocessing), компіляція (compilation), збирання (assembly), лінкування(linking). Розглянемо кожен з даних етапів на прикладі програми 'hello.c'. Зверніть увагу, що для компіляції hello.c нема потреби викликати кожну із нижче розглянутих команд окремо. Усі програми автоматично викликає компілятор і їх виклики можна відслідковувати додавши опцію '-v' до команди gcc. Розглянувши кожну команду окремо ми будемо краще розуміти роботу компілятора. Поряд з тим, що 'hello' є досить простою програмою, у ній використано зовнішні бібліотеки, тому під час компіляції даної програми будуть пройдені усі вище вказані етапи.
Препроцесор
Першим етапом компіляції є виклик препроцесора. Препроцесор розгортає(підставляє значення у) макроси та додає у 'hello.c' код необхідних header-файлів. Для цього gcc викликає таку команду: cpp hello.c > hello.i Результатом виконання даної команди є файл 'hello.i', у якому міститься source-код з розгорнутими макросами і вставленими header-файлами. Зверніть увагу, що вихідні файли роботи препроцесора мають розширення '.i' для програм на мові С і '.ii' для програм на мові С++. По замовчуванню hello.i та інші проміжні файли після компіляції не буде збережено на диску, проте, це можливо змінити вказавши опцію '-save-temps=obj' під час виклику gcc, тобто
gcc -save-temps=obj -c hello.c
Компілятор
Наступним етапом є власне компіляція вихідного файлу препроцесора(hello.i). Результатом цього етапу є файл 'hello.s'. У даному файлі міститься код на мові ассемблер. Файл 'hello.s' є проміжним, тому компілятор по замовчуванню його видаляє. Щоб зберегти 'hello.s' і переглянути його вміст необхідно виконати таку команду: gcc -S hello.i Результатом цієї команди є файл 'hello.s' Ось як виглядає 'hello.s' для процесора з архітектурою x86_64.
.file "hello.c"
.section .rodata
.LC0:
.string "Hello World"
.text
.globl main
.type main, @function
main:
.LFB0:
.cfi_startproc
pushq %rbp
.cfi_def_cfa_offset 16
.cfi_offset 6, -16
movq %rsp, %rbp
.cfi_def_cfa_register 6
movl $.LC0, %edi
call puts
popq %rbp
.cfi_def_cfa 7, 8
ret
.cfi_endproc
.LFE0:
.size main, .-main
.ident "GCC: (Ubuntu 4.8.4-2ubuntu1~14.04.1) 4.8.4"
Збирання
Метою даного етапу є перетворення коду мовою асемблер на машинний код і генерація object-файлу. Якщо у коді є виклики зовнішніх функцій, асемблер залишає адреси початку цих зовнішніх функцій невизначеними. Їх значення будуть заповнені компонувальником на наступному етапі компіляції. Для виклику асемблера:
as hello.s -o hello.o
Як ми бачимо вихідний файл команди вказано за допомогою опції -о. Результатом роботи асемблера є файл hello.o, що містить програму 'hello' у вигляді машинних інструкцій, де також є, поки що невизначена, адреса(undefined reference) початку функції printf().
Лінкування
Останнім етапом компіляції є лінкування(linking) об'єктного файлу для створення executable-файлу, власне програми 'hello'. На практиці, executable-файли потребують багатьох зовнішніх функцій і динамічних (run-time) бібліотек С. Таким чином, справжні команди лінкування, котрі внутрішньо автоматично виконує gcc, є досить складними. Таким чином, повна команда для лінкування 'hello':
ld -dynamic-linker /lib/ld-linux.so.2 /usr/lib/crt1.o /usr/lib/crti.o /usr/lib/gcc-lib/i686/3.3.1/crtbegin.o -L/usr/lib/gcc-lib/i686/3.3.1 hello.o -lgcc -lgcc_eh -lc -lgcc -lgcc_eh /usr/lib/gcc-lib/i686/3.3.1/crtend.o /usr/lib/crtn.o
Дана команда лінкує object-файл 'hello.o' із стандартною бібліотекою C і створює вихідний executable-файл 'hello'. Для запуску 'hello':
./hello
Таким, чином виконання команди 'gcc -o hello hello.c' можливо зобразити так:
hello.c -> | PREPROCESSOR(cpp) | -> hello.i -> | COMPILER(cc) | -> hello.s -> | ASSEMBLER(as) | -> hello.o -> | LINKER(ld) | -> hello
Зневадження програм, скомпільованих за допомогою GCC
Головним інструментом для зневадження програм, скомпільованих за допомогою GCC, є GNU Debugger (gdb). Існують також вузькоспеціалізовані засоби для зневаджування:
- Valgrind для пошуку витоків пам'яті
- GNU Profiler (gprof) використовується для того, щоб визначити, скільки часу йде на виконання тієї або іншої частини програми, як часто викликаються ті або інші процедури; для використання gprof необхідно компілювати програму із спеціальними опціями для включення «профілізації».
Інструментальні оболонки
Компілятори мають десятки опцій і користуватися ними напряму не зовсім зручно. Для спрощення роботи використовують оболонки або інтегровані середовища розробки — Code::Blocks, /, Eclipse, KDevelop, NetBeans.
Відзнаки
У 2014 Асоціація обчислювальної техніки (ACM), найавторитетніша міжнародна організація, в області комп'ютерних систем присудила проєкту GCC премію за внесок у розвиток мов програмування (SIGPLAN Programming Languages Software Award). Премія присуджується за значний вплив на пов'язані з мовами програмування дослідження, реалізації технологій і інструменти.
Посилання
- сторінка GCC [ 11 січня 2012 у Wayback Machine.]
- Керівництво v4.0 [ 27 квітня 2006 у Wayback Machine.]
- Керівництво v3.4.3 [ 18 червня 2006 у Wayback Machine.]
- тижневі новини[недоступне посилання з червня 2019]
- GCC Wiki [ 29 серпня 2006 у Wayback Machine.]
Література
- Richard M. Stallman: Using and Porting the GNU Compiler Collection [ 27 грудня 2006 у Wayback Machine.], Free Software Foundation,
- Richard M. Stallman: Using Gcc: The Gnu Compiler Collection Reference [ 22 грудня 2006 у Wayback Machine.], Free Software Foundation,
- : An Introduction to GCC [Архівовано 5 грудня 2012 у Archive.is], Network Theory Ltd.,
- Arthur Griffith, GCC: The Complete Reference. McGrawHill/Osborne. .
Виноски
- GCC Releases. GNU Project. Архів оригіналу за 23 червня 2013. Процитовано 27 грудня 2006.
- . Архів оригіналу за 2 вересня 2020. Процитовано 6 червня 2020.
- . Архів оригіналу за 7 серпня 2014. Процитовано 14 червня 2014.
Див. також
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Nabir kompilya toriv GNU GNU Compiler Collection GCC nabir kompilyatoriv dlya riznih mov programuvannya GCC vilne programne zabezpechennya rozroblene Fondom Vilnih Program pid licenziyeyu GNU GPL ta GNU LGPL i ye klyuchovoyu skladovoyu naboru znaryad rozrobki GNU GNU development toolchain Ce standartnij kompilyator dlya vilnih Unix podibnih operacijnih sistem i deyakih propriyetarnih sistem sho z nih rozvinulis napriklad Mac OS X GNU Compiler CollectionGCC pid keruvannyam komandnogo ryadkaTipnabir kompilyatorivRozrobnikThe GNU ProjectPershij vipusk23 travnya 1987Stabilnij vipusk12 1 6 travnya 2022 2 roki tomu 2022 05 06 Platformakrosplatformova programaOperacijna sistemadekilkaMova programuvannyaC C AdaDostupni movianglijska rosijska ta bagato inshihStan rozrobkiAktivnijLicenziyaGPLRepozitorijgcc gnu org git gcc gitVebsajtgcc gnu org Mediafajli u Vikishovishi Spochatku nazivavsya GNU Kompilyator Si oskilki pidtrimuvav lishe odnu movu programuvannya C Piznishe buv rozshirenij dlya pidtrimki C Fortran Java kompilyator GCJ Ada D ta inshih OglyadGCC zapochatkovanij Richardom Stolmenom u 1985 roci yak kompilyator dlya proyektu GNU Project abi mati kompilyator yakij ye vilnim programnim zabezpechennyam Jogo rozrobkoyu tisno opikuvavsya Fond Vilnih Program Persha versiya vipushena navesni 1987 na kinec 1987 roku z yavilasya pidtrimka C GCC buv pershim nezalezhno stvorenim ne bazuvavsya na preprocesori CFront B yarna Straustrupa ta pershim vlasne kompilyatorom a ne preprocesorom u C movi C U 1997 grupa rozrobnikiv nezadovolena povilnim tempom i zakritistyu oficijnoyi rozrobki GCC stvorila proyekt EGCS Experimental Enhanced GNU Compiler System Eksperimentalna Pokrashena Zbirka Kompilyatoriv GNU yakij ob yednav dekilka eksperimentalnih vidgaluzhen GCC Rozrobka EGCS z chasom viyavilas bilsh zhittyevoyu nizh GCC i u kvitni 1999 roku EGCS ogoloshena oficijnoyu versiyeyu GCC GCC teper rozroblyayetsya shirokoyu grupoyu rozrobnikiv zi vsogo svitu Vona perenesena na bilshu kilkist tipiv procesoriv ta operacijnih sistem nizh bud yakij inshij kompilyator GCC ye oficijnim kompilyatorom GNU vklyuchno iz GNU Linux prijnyatij yak osnovnij kompilyator i dlya inshih operacijnih sistem takih yak varianti BSD Mac OS X NeXTSTEP i BeOS Versiya GCC pid Microsoft Windows zabezpechuyetsya proyektami MinGW ta Cygwin pid DOS proyektom lishe C C MoviVersiya 4 0 0 vipushena 20 kvitnya 2005 u tipovij zbirci pidtrimuye nastupni movi Ada GCC dlya Ada takozh vidomij yak Si C GCC dlya C takozh vidomij yak G Fortran GCC dlya Fortranu takozh vidomij yak GFortran Java GCC dlya Java takozh vidomij yak GCJ Vidalenij pochinayuchi z versiyi GCC 7 1 Objective C Go GCC dlya Go abo gccgo pochinayuchi z versiyi 4 6 D GCC D pochinayuchi z versiyi 9 1 Pidtrimka CHILL pripinena cherez nedostatnyu aktivnist rozrobki Dodatkovi proyekti pidtrimuyut movi programuvannya Pascal Mercury VHDL PL I ta Objective C ArhitekturiGCC versiyi 4 1 stvoryuye kod dlya takih procesornih arhitektur Alpha ARM System 370 x86 ta AMD64 IA 64 Itanium Motorola 68000 MIPS PA RISC PDP 11 PowerPC SuperH SPARC VAX Mensh vidomi sered pidtrimuvanih procesoriv vklyuchayut Atmel AVR Intel i960 MMIX i Okremimi proyektami pidtrimuyetsya PDP 10 i Z8000 StrukturaZovnishnij interfejs GCC ye standartom dlya kompilyatoriv na platformi Unix Koristuvach viklikaye upravlyayuchu programu yaka nazivayetsya gcc Vona interpretuye argumenti komandnogo ryadka viznachaye i zapuskaye dlya kozhnogo vhidnogo fajlu svoyi kompilyatori potribnoyi movi zapuskaye yaksho neobhidno asembler i komponuvalnik Kompilyator kozhnoyi movi ye okremoyu programoyu yaka otrimuye pochatkovij tekst i porodzhuye vihid na movi asemblera Vsi kompilyatori mayut zagalnu vnutrishnyu strukturu front end yakij provodit sintaksichnij rozbir i porodzhuye abstraktne sintaksichne derevo i back end yakij konvertuye derevo v Register Transfer Language RTL vikonuye rizni optimizaciyi potim porodzhuye programu na movi asemblera vikoristovuyuchi arhitekturno zalezhne zistavlennya zi zrazkom GCC majzhe povnistyu napisanij na Si hocha znachna chastina front end dlya Adi napisana na Ada V travni 2010 Kerivnij komitet GCC virishiv dozvoliti vikoristovuvati C kompilyator dlya kompilyaciyi GCC V serpni 2012 roku komitet dozvoliv takozh vikoristovuvati C movu dlya rozrobki GCC i deyaki skladni strukturi danih napr hesh tablici itp buli perepisani z dopomogoyu C z vikoristannyam shabloniv Dlya kompilyaciyi GCC zaraz vimagayetsya kompilyator movi C sho pidtrimuye shonajmenshe ISO IEC C 03 standart Etapi kompilyaciyi programi movoyu S na GCCKompilyaciya programi na movi C za dopomogoyu gcc peredbachaye taki poslidovni etapi preprocesor prepocessing kompilyaciya compilation zbirannya assembly linkuvannya linking Rozglyanemo kozhen z danih etapiv na prikladi programi hello c Zvernit uvagu sho dlya kompilyaciyi hello c nema potrebi viklikati kozhnu iz nizhche rozglyanutih komand okremo Usi programi avtomatichno viklikaye kompilyator i yih vikliki mozhna vidslidkovuvati dodavshi opciyu v do komandi gcc Rozglyanuvshi kozhnu komandu okremo mi budemo krashe rozumiti robotu kompilyatora Poryad z tim sho hello ye dosit prostoyu programoyu u nij vikoristano zovnishni biblioteki tomu pid chas kompilyaciyi danoyi programi budut projdeni usi vishe vkazani etapi Preprocesor Pershim etapom kompilyaciyi ye viklik preprocesora Preprocesor rozgortaye pidstavlyaye znachennya u makrosi ta dodaye u hello c kod neobhidnih header fajliv Dlya cogo gcc viklikaye taku komandu cpp hello c gt hello i Rezultatom vikonannya danoyi komandi ye fajl hello i u yakomu mistitsya source kod z rozgornutimi makrosami i vstavlenimi header fajlami Zvernit uvagu sho vihidni fajli roboti preprocesora mayut rozshirennya i dlya program na movi S i ii dlya program na movi S Po zamovchuvannyu hello i ta inshi promizhni fajli pislya kompilyaciyi ne bude zberezheno na disku prote ce mozhlivo zminiti vkazavshi opciyu save temps obj pid chas vikliku gcc tobto gcc save temps obj c hello c Kompilyator Nastupnim etapom ye vlasne kompilyaciya vihidnogo fajlu preprocesora hello i Rezultatom cogo etapu ye fajl hello s U danomu fajli mistitsya kod na movi assembler Fajl hello s ye promizhnim tomu kompilyator po zamovchuvannyu jogo vidalyaye Shob zberegti hello s i pereglyanuti jogo vmist neobhidno vikonati taku komandu gcc S hello i Rezultatom ciyeyi komandi ye fajl hello s Os yak viglyadaye hello s dlya procesora z arhitekturoyu x86 64 file hello c section rodata LC0 string Hello World text globl main type main function main LFB0 cfi startproc pushq rbp cfi def cfa offset 16 cfi offset 6 16 movq rsp rbp cfi def cfa register 6 movl LC0 edi call puts popq rbp cfi def cfa 7 8 ret cfi endproc LFE0 size main main ident GCC Ubuntu 4 8 4 2ubuntu1 14 04 1 4 8 4 Zbirannya Metoyu danogo etapu ye peretvorennya kodu movoyu asembler na mashinnij kod i generaciya object fajlu Yaksho u kodi ye vikliki zovnishnih funkcij asembler zalishaye adresi pochatku cih zovnishnih funkcij neviznachenimi Yih znachennya budut zapovneni komponuvalnikom na nastupnomu etapi kompilyaciyi Dlya vikliku asemblera as hello s o hello o Yak mi bachimo vihidnij fajl komandi vkazano za dopomogoyu opciyi o Rezultatom roboti asemblera ye fajl hello o sho mistit programu hello u viglyadi mashinnih instrukcij de takozh ye poki sho neviznachena adresa undefined reference pochatku funkciyi printf Linkuvannya Ostannim etapom kompilyaciyi ye linkuvannya linking ob yektnogo fajlu dlya stvorennya executable fajlu vlasne programi hello Na praktici executable fajli potrebuyut bagatoh zovnishnih funkcij i dinamichnih run time bibliotek S Takim chinom spravzhni komandi linkuvannya kotri vnutrishno avtomatichno vikonuye gcc ye dosit skladnimi Takim chinom povna komanda dlya linkuvannya hello ld dynamic linker lib ld linux so 2 usr lib crt1 o usr lib crti o usr lib gcc lib i686 3 3 1 crtbegin o L usr lib gcc lib i686 3 3 1 hello o lgcc lgcc eh lc lgcc lgcc eh usr lib gcc lib i686 3 3 1 crtend o usr lib crtn o Dana komanda linkuye object fajl hello o iz standartnoyu bibliotekoyu C i stvoryuye vihidnij executable fajl hello Dlya zapusku hello hello Takim chinom vikonannya komandi gcc o hello hello c mozhlivo zobraziti tak hello c gt PREPROCESSOR cpp gt hello i gt COMPILER cc gt hello s gt ASSEMBLER as gt hello o gt LINKER ld gt helloZnevadzhennya program skompilovanih za dopomogoyu GCCGolovnim instrumentom dlya znevadzhennya program skompilovanih za dopomogoyu GCC ye GNU Debugger gdb Isnuyut takozh vuzkospecializovani zasobi dlya znevadzhuvannya Valgrind dlya poshuku vitokiv pam yati GNU Profiler gprof vikoristovuyetsya dlya togo shob viznachiti skilki chasu jde na vikonannya tiyeyi abo inshoyi chastini programi yak chasto viklikayutsya ti abo inshi proceduri dlya vikoristannya gprof neobhidno kompilyuvati programu iz specialnimi opciyami dlya vklyuchennya profilizaciyi Instrumentalni obolonkiKompilyatori mayut desyatki opcij i koristuvatisya nimi napryamu ne zovsim zruchno Dlya sproshennya roboti vikoristovuyut obolonki abo integrovani seredovisha rozrobki Code Blocks Dev C wxDev C Eclipse KDevelop NetBeans VidznakiU 2014 Asociaciya obchislyuvalnoyi tehniki ACM najavtoritetnisha mizhnarodna organizaciya v oblasti komp yuternih sistem prisudila proyektu GCC premiyu za vnesok u rozvitok mov programuvannya SIGPLAN Programming Languages Software Award Premiya prisudzhuyetsya za znachnij vpliv na pov yazani z movami programuvannya doslidzhennya realizaciyi tehnologij i instrumenti Posilannyastorinka GCC 11 sichnya 2012 u Wayback Machine Kerivnictvo v4 0 27 kvitnya 2006 u Wayback Machine Kerivnictvo v3 4 3 18 chervnya 2006 u Wayback Machine tizhnevi novini nedostupne posilannya z chervnya 2019 GCC Wiki 29 serpnya 2006 u Wayback Machine Literatura Richard M Stallman Using and Porting the GNU Compiler Collection 27 grudnya 2006 u Wayback Machine Free Software Foundation ISBN 0 595 10035 X Richard M Stallman Using Gcc The Gnu Compiler Collection Reference 22 grudnya 2006 u Wayback Machine Free Software Foundation ISBN 1 882114 39 6 An Introduction to GCC Arhivovano 5 grudnya 2012 u Archive is Network Theory Ltd ISBN 0 9541617 9 3 Arthur Griffith GCC The Complete Reference McGrawHill Osborne ISBN 0 07 222405 3 VinoskiGCC Releases GNU Project Arhiv originalu za 23 chervnya 2013 Procitovano 27 grudnya 2006 Arhiv originalu za 2 veresnya 2020 Procitovano 6 chervnya 2020 Arhiv originalu za 7 serpnya 2014 Procitovano 14 chervnya 2014 Div takozhGCC Summit GCC Inline Assembly Sintaksichnij analizator