C++
C++ — daniyalı kompyuter ilimpazı Byarn Straustrup tárepinen jaratılǵan joqarı dárejeli, ulıwma maqsetli programmalastırıw tili. Dáslep 1985-jılı C programmalastırıw tiliniń keńeytpesi retinde obyektke baǵdarlanǵan programmalastırıw (OBP) imkaniyatların qostı, sonnan keyin waqıt ótiwi menen jáne de kóp OBP hám basqa imkaniyatlardı qosıp, ádewir keńeydi; 1997/C++98 standartlastırıwınan baslap, C++ mikrokompyuterler sıyaqlı sistemalar ushın yaki Linux yamasa Windows sıyaqlı operaciyalıq sistemalardı jaratıw ushın tómen dárejeli yadtı manipulyaciyalaw qurallarına qosımsha retinde funkcional imkaniyatlardı qostı, hátte keyinirek ulıwma programmalastırıw (shablonlar arqalı) sıyaqlı imkaniyatlar da payda boldı. C++ ádette kompilyaciyalanatuǵın til retinde ámelge asırıladı hám kóp islep shıǵarıwshılar, sonıń ishinde Free Software Foundation, LLVM, Microsoft, Intel, Embarcadero, Oracle hám IBM C++ kompilyatorların usınadı[1]. C++ sistemalı programmalastırıw hám ornatılǵan, resursları sheklengen programmalıq támiynat hám úlken sistemalardı esapqa alıp, onıń dizaynınıń tiykarǵı ózgeshelikleri retinde islew ónimdarlıǵı, nátiyjeliligi hám qollanıw beyimliligi menen joybarlanǵan[2]. C++ sonday-aq, basqa da kóp tarawlarda paydalı bolıp tabıldı, onıń tiykarǵı kúshli tárepleri programmalıq támiynat infrastrukturası hám resursları sheklengen qosımshalar, sonıń ishinde kompyuter qosımshaları, video oyınlar, serverler (mısalı, elektron kommerciya, veb-izlew yaki maǵlıwmatlar bazası) hám ónimdarlıǵı áhmiyetli qosımshalar (mısalı, telefon kommutatorları yaki kosmos zondları) bolıp tabıladı[3]. C++ Xalıqaralıq Standartlastırıw Shólkemi (ISO) tárepinen standartlastırılǵan, eń sońǵı standart versiyası 2024-jıl oktyabr ayında ISO/IEC 14882:2024 (rásmiy emes túrde C++23 dep ataladı) retinde ISO tárepinen ratifikaciyalanǵan hám járiyalanǵan. C++ programmalastırıw tili dáslep 1998-jılı ISO/IEC 14882:1998 retinde standartlastırılǵan, soń oǵan C++03, C++11, C++14, C++17 hám C++20 standartları menen ózgerisler kirgizilgen. Házirgi C++23 standartı olardıń ornın jańa imkaniyatlar hám keńeytilgen standart kitapxana menen basadı. 1998-jılǵı dáslepki standartlastırıwdan aldın, C++ 1979-jıldan baslap Bell Labs kompaniyasında Straustrup tárepinen C tiliniń keńeytpesi retinde islep shıǵılǵan; ol C tiline uqsas, biraq programmanı shólkemlestiriw ushın joqarı dárejeli imkaniyatlardı usınatuǵın nátiyjeli hám qolaylı tildi qálegen[4]. 2012-jıldan baslap, C++ úsh jıllıq shıǵarıw kestesinde bolıp,[5] C++26 keyingi jobalastırılǵan standart bolıp esaplanadı[6]. Tariyxı![]() 1979-jılı daniyalı kompyuter ilimpazı Byarn Straustrup C++ tiliniń baslawshısı bolǵan «Klasslı C» ústinde isley basladı[7]. Jańa tildi jaratıw motivaciyası Straustruptıń PhD dissertaciyası ushın programmalastırıw tájiriybesinen kelip shıqqan. Straustrup Simula tiliniń úlken programmalıq támiynattı islep shıǵıw ushın júdá paydalı imkaniyatları bar ekenin, biraq bul tildiń ámeliy qollanıw ushın júdá áste ekenin, al BCPL tez, biraq úlken programmalıq támiynattı islep shıǵıw ushın dım tómen dárejeli ekenin anıqladı. Straustrup AT&T Bell Labs kompaniyasında isley baslaǵanda, ol bólistirilgen esaplawlarǵa baylanıslı UNIX yadrosın analizlew mashqalasına ushıradı. Óziniń PhD tájiriybesin eslep, Straustrup C tilin Simula sıyaqlı imkaniyatlar menen jetilistiriwge kiristi[8]. C tili onıń ulıwma maqsetli, tez, portativ hám keńnen qollanılatuǵını ushın tańlandı. C hám Simula tilleriniń tásirinen tısqarı, bul jańa tilge ALGOL 68, Ada, CLU hám ML sıyaqlı basqa tiller de tásir etti. Dáslep, Straustruptıń «Klasslı C» tili C kompilyatorına, Cpre-ge, klasslar, tuwındı klasslar, qatań tiplestiriw, ishki funkciyalar (inlining) hám standart argumentler sıyaqlı imkaniyatlardı qostı[9]. ![]() 1982-jılı Straustrup «Klasslı C» tiliniń miyrasxorın islep shıǵıwdı basladı, onı bir neshe basqa atamalardan keyin «C++» dep atadı (++ C tilindegi inkrement operatorı bolıp esaplanadı). Jańa imkaniyatlar qosıldı, sonıń ishinde virtual funkciyalar, funkciya hám operatorlardı qayta júklew, siltemeler, konstantalar, tipke qáwipsiz erkin yadtı bólistiriw (new/delete), jaqsılanǵan tipti tekseriw hám eki qıya sızıq (//) penen jazılatuǵın BCPL stilindegi bir qatarlı kommentariyalar. Sonıń menen birge, Straustrup C++ ushın jańa, óz aldına kompilyator Cfront-tı islep shıqtı. 1984-jılı Straustrup birinshi aǵımlı kirgiziw/shıǵarıw kitapxanasın ámelge asırdı. Atalǵan shıǵarıw funkciyasınıń ornına shıǵarıw operatorın usınıw ideyasın Dag MakIlroy usınǵan (ol burın Unix kanalların usınǵan edi). 1985-jılı «C++ programmalastırıw tili» kitabınıń birinshi basılımı shıǵarıldı, bul kitap sol waqıtta rásmiy standart bolmaǵanlıqtan, til ushın tiykarǵı derek boldı[10]. C++ tiliniń birinshi kommerciyalıq realizaciyası sol jıldıń oktyabr ayında shıǵarıldı. 1989-jılı C++ 2.0 shıǵarıldı, onıń izinen 1991-jılı «C++ programmalastırıw tili» kitabınıń jańartılǵan ekinshi basılımı shıqtı[11]. 2.0 versiyasındaǵı jańa imkaniyatlarǵa kóp miyrasxorlıq, abstrakt klasslar, statikalıq klass aǵzaları funkciyaları, konstantalıq klass aǵzaları funkciyaları hám qorǵalǵan aǵzalar kirdi. 1990-jılı «Annotaciyalanǵan C++ maǵlıwmatnaması» járiyalandı. Bul jumıs keleshektegi standart ushın tiykar boldı. Keyinirek qosılǵan imkaniyatlarǵa shablonlar, ayrıqsha jaǵdaylar, atamalar keńisligi, jańa túrlendiriwler hám logikalıq tipi kirdi. 1998-jılı C++98 shıǵarılıp, tildi standartlastırdı, al 2003-jılı kishi jańalaw (C++03) shıǵarıldı. C++98 den keyin, C++ salıstırmalı túrde áste rawajlandı, tek 2011-jılı C++11 standartı shıǵarılǵanǵa shekem. Bul standart kóp sanlı jańa imkaniyatlardı qostı, standart kitapxananı jáne de keńeytti hám C++ baǵdarlamashılarına kóbirek qolaylıqlar usındı. 2014-jıldıń dekabr ayında shıǵarılǵan kishi C++14 jańalawınan keyin, C++17 de túrli jańa qosımshalar kirgizildi[12]. 2020-jıldıń fevral ayında juwmaqlanǵannan keyin,[13] C++20 standartınıń joybarı 2020-jıl 4-sentyabrde maqullandı hám 2020-jıl 15-dekabrde rásmiy túrde járiyalandı[14][15]. 2018-jıl 3-yanvarda Straustrup «C++ programmalastırıw tilin konceptuallastırǵanı hám islep shıqqanı ushın» injeneriya tarawındaǵı Charlz Stark Dreyper sıylıǵınıń 2018-jılǵı jeńimpazı dep járiyalandı[16]. 2022-jıl dekabr ayında C++ TIOBE indeksinde úshinshi orındı iyelep, indeks tariyxında birinshi ret Java-dan ozdı. 2024-jıl noyabr ayınıń maǵlıwmatlarına sáykes, bul til Python-nan keyin ekinshi orında, al Java úshinshi orında[17]. 2025-jıl mart ayında Straustrup til birlespesin onı qorǵawǵa shaqırdı. Bul til yadtı qol menen basqarıwǵa imkaniyat beretuǵınlıqtan, baǵdarlamashı tárepinen abaysızda qáte qollanılǵanda, programmalarǵa buferdiń tolıp ketiwi sıyaqlı qáwipsizlik qáwiplerin payda etetuǵın qáteler kirgiziliwi múmkin[18]. EtimologiyasıStraustruptıń pikirinshe, «bul atama C tilinen evolyuciyalıq ózgerislerdiń tábiyatın kórsetedi»[19]. Bul atama Rik Maskittige tiyisli (1983-jıldıń ortası) hám birinshi ret 1983-jılı dekabrde qollanılǵan. 1992-jılı Maskittiden rásmiy emes túrde atama haqqında soralǵanda, ol onıń házil retinde berilgenin aytqan. Atama C tiliniń C++ tilin islep shıǵıw dáwirinde, ol óziniń sońǵı atamasın alǵanǵa shekem «jańa C» hám «Klasslı C»[20] dep atalǵan. FilosofiyasıC++ tiliniń pútkil ómiri dawamında, onıń rawajlanıwı hám evolyuciyası bir qatar principlerge tiykarlanǵan:
Standartlastırıw
C++ tili JTC1/SC22/WG21 dep atalatuǵın ISO jumıs toparı tárepinen standartlastırılǵan. Jumıs toparı hár jılı úsh háptelik ushırasıwlar ótkeredi[28]. Házirgi waqıtqa shekem ol C++ standartınıń jeti redakciyasın shıǵardı hám házirgi waqıtta kelesi redakciya, yaǵnıy C++26 ústinde islemekte. ![]() 1998-jılı ISO jumıs toparı C++ tilin birinshi ret ISO/IEC 14882:1998 retinde standartlastırdı, ol rásmiy emes túrde C++98 dep ataladı. 2003-jılı ol C++ standartınıń ISO/IEC 14882:2003 dep atalatuǵın jańa versiyasın shıǵardı, ol C++98 de anıqlanǵan mashqalalardı dúzetti. Standarttıń kelesi úlken redakciyası rásmiy emes túrde «C++0x» dep ataldı, biraq ol 2011-jılǵa shekem shıǵarılmadı[29]. C++11 (14882:2011) tiykarǵı tilge de, standart kitapxanaǵa da kóp qosımshalardı kirgizdi. 2014-jılı C++14 (C++1y dep te ataladı) tiykarınan qátelerdi dúzetiw hám kishi jetilistiriwlerdi óz ishine alǵan C++11 ge kishi keńeytpe retinde shıǵarıldı[30]. Xalıqaralıq standart joybarı boyınsha dawıs beriw proceduraları 2014-jıldıń avgust ayınıń ortalarında juwmaqlandı[31]. C++14 ten keyin, rásmiy emes túrde C++1z dep atalatuǵın úlken redakciya - C++17, ISO C++ komiteti tárepinen 2017-jıldıń iyul ayınıń ortalarında tamamlandı hám 2017-jılı dekabrde maqullandı hám basıp shıǵarıldı[32]. Standartlastırıw procesiniń bir bólimi retinde, ISO sonday-aq texnikalıq esabatlardı hám specifikaciyalardı da járiyalaydı:
Kóbirek texnikalıq specifikaciyalar islep shıǵılmaqta hám maqullawdı kútpekte. TilC++ tiliniń eki tiykarǵı komponentti bar: tiykarınan C ishki toplamı tárepinen usınılatuǵın apparatlıq támiynat ózgeshelikleriniń tikkeley sáykesligi hám sol sáykesliklerge tiykarlanǵan nol-qosımsha shıǵınlı abstrakciyalar. Straustrup C++ tilin «nátiyjeli hám kórkem abstrakciyalardı qurıw hám qollanıw ushın [arnalǵan] jeńil salmaqlı abstrakciyalıq programmalastırıw tili» dep súwretleydi; hám «apparatlıq támiynatqa kiriwdi de, abstrakciyanı da usınıw C++ tiliniń tiykarı bolıp tabıladı. Bunı nátiyjeli orınlaw onı basqa tillerden ajıratıp turadı»[52]. C++ tili C sintaksisiniń kópshilik bólegin miyras etip alǵan. C standartına sáykes keletuǵın "Hello world" programması, sonday-aq jaramlı C++ "Hello world" programması bolıp tabıladı. Tómende standart shıǵarıwǵa xabar jazıw ushın C++ standart kitapxanasınıń aǵım imkaniyatın qollanatuǵın Byarn Straustruptıń "Hello world" programmasınıń versiyası keltirilgen:[53][54] #include <iostream>
int main()
{
std::cout << "Hello, world!\n";
}
Standart kitapxana![]() C++ standartı eki bólimnen ibarat: tiykarǵı til hám standart kitapxana. C++ baǵdarlamashıları sońǵısın C++ tiliniń hárbir úlken implementaciyasında kútedi; ol agregat tiplerdi (vektorlar, dizimler, kartalar, toplamlar, gezekler, stekler, massivler, kortejler), algoritmlerdi (tabıw, hár biri ushın, binar izlew, tosınnan aralastırıw hám t.b.), kirgiziw/shıǵarıw quralların (iostream, konsoldan hám fayllardan oqıw hám jazıw ushın), fayl sisteması kitapxanasın, lokalizaciyanı qollap-quwatlawdı, yadtı avtomat túrde basqarıw ushın aqıllı kórsetkishlerdi, turaqlı ańlatpalardı qollap-quwatlawdı, kóp aǵımlı kitapxananı, atomlıq operaciyalardı qollap-quwatlawdı (hesh qanday sırtqı sinxronizaciyasız bir waqıttıń ózinde eń kóbi bir aǵım tárepinen ózgeriwshini oqıwǵa yamasa jazıwǵa imkaniyat beredi), waqıt utilitlerin (ólshew, aǵımdaǵı waqıttı alıw hám t.b.), C++ ózgesheliklerin qolanbaytuǵın qáteler haqqında xabar beriwdi C++ ózgesheliklerine aylandırıw sistemasın, tosınnan sanlar generatorın hám C standartı kitapxanasınıń sál ózgerilgen versiyasın (onı C++ tipler sistemasına sáykes keltiriw ushın) óz ishine aladı. C++ standart kitapxanasınıń dizaynı, C standart kitapxanası sıyaqlı, minimalistik bolıp, tek programmalastırıw ushın tiykarǵı ózgesheliklerdi óz ishine aladı, Java standart kitapxanası yamasa C# standart kitapxanası tárepinen usınılatuǵın kópshilik qánigelestirilgen ózgesheliklerge iye emes. Kóbirek ózgeshelikler ushın, standart kitapxananı tolıqtırıw maqsetinde qosımsha imkaniyatlardı usınatuǵın Boost kitapxanaları hám POCO C++ kitapxanaları sıyaqlı ayırım úshinshi tárep kitapxanaları qollanılıwı múmkin. C++ kitapxanasınıń úlken bólegi Standart shablon kitapxanasına (STL) tiykarlanǵan. STL tárepinen usınılǵan paydalı qurallarǵa obektler toplamları retinde konteynerler (mısalı, vektorlar hám dizimler), konteynerlerge massiv sıyaqlı kiriwdi támiyinleytuǵın iteratorlar hám izlew hám sortlaw sıyaqlı operaciyalardı orınlaytuǵın algoritmler kiredi. Sonıń menen bir qatarda, (multi)kartalar (associativ massivler) hám (multi)toplamlar usınılǵan, olardıń barlıǵı úylesimli interfeyslerdi eksportlaydı. Sonlıqtan, shablonlardı qollanıp, hár qanday konteyner menen yamasa iteratorlar menen belgilengen hár qanday izbe-izlikte isleytuǵın ulıwma algoritmlerdi jazıw múmkin. C tilindegidey, kitapxananıń ózgesheliklerine standart temanı (baslama faylın) qosıw ushın Standart óziniń ishine Aleksandr Stepanov tárepinen dáslepki ret islep shıǵılǵan STL-di óz ishine aladı, ol kóp jıllar dawamında ulıwma algoritmler hám konteynerler menen tájiriybe ótkergen. Ol C++ penen isley baslaǵanda, aqırı `inlining` (kodtı ornatıw) hám funkciya kórsetkishleriniń ornına kompilyaciya waqtında baylanıstırıw sıyaqlı C++ ózgeshelikleriniń arqasında, mısalı, C standart kitapxanasınıń `qsort` funkciyasınan da jaqsıraq isleytuǵın ulıwma algoritmlerdi (mısalı, STL sortlaw) jaratıw múmkin bolǵan tildi taptı. Standartta ol «STL» dep atalmaydı, sebebi ol tek standart kitapxananıń bir bólegi bolıp tabıladı, biraq bul termin onı standart kitapxananıń qalǵan bóleginen (kirgiziw/shıǵarıw aǵımları, xalıqaralıqlastırıw, diagnostika, C kitapxanasınıń ishki toplamı, hám t.b.) ajıratıw ushın ele de keńnen qollanıladı[55]. Kóplegen C++ kompilyatorları, hám barlıq tiykarǵıları, C++ standart kitapxanasınıń standartlarǵa sáykes implementaciyasın usınadı. C++ tiykarǵı kórsetpeleriC++ Core Guidelines[56] – bul C++ tiń avtorı Byarn Straustrup hám C++ ISO Jumıs toparınıń jetekshisi hám baslıǵı Gerb Satter basshılıǵındaǵı baslama bolıp, baǵdarlamashılarǵa C++11 hám onnan jańa til standartları ushın eń jaqsı ámeliyatlardı qollanıp, 'Zamanagóy C++' jazıwǵa járdem beriwge hám kompilyatorlar hám statikalıq tekseriw quralların islep shıǵıwshılarǵa jaman programmalastırıw ámeliyatların anıqlaw ushın qaǵıydalar jaratıwǵa járdemlesiwge baǵdarlanǵan. Tiykarǵı maqset – tip hám resurslar qáwipsizligin támiyinleytuǵın C++ kodın nátiyjeli hám izbe-iz jazıw. Core Guidelines CPPCon 2015 konferenciyasınıń ashılıw bayanatında járiyalandı[57]. Kórsetpeler Guideline Support Library (GSL)[58] menen birge usınıladı, bul Core Guidelines-tı ámelge asırıw ushın tek tema fayllarınan ibarat tipler hám funkciyalar kitapxanası hám Kórsetpe qaǵıydaların orınlawdı qadaǵalaytuǵın statikalıq tekseriw quralları[59]. ÚylesimlilikKompilyator islep shıǵarıwshılarına kóbirek erkinlik beriw ushın, C++ standartları komiteti atamalardı ózgertiw, ózgesheliklerdi qayta islew hám basqa da implementaciyaǵa tán qásiyetlerdiń orınlanıwın belgilemewge sheshim qabıl etti. Bul sheshimniń unamsız tárepi – hár qıylı kompilyatorlar tárepinen islep shıǵarılǵan obekt kodınıń úylesimsiz bolıwı kútiledi. Degen menen, belgili bir mashinalar yamasa operaciyalıq sistemalar ushın kompilyatorlardı standartlastırıwǵa háreketler bar. Mısalı, Itanium C++ ABI (atına qaramastan) processorǵa ǵárezsiz hám GCC hám Clang tárepinen ámelge asırılǵan[60]. C tili menenC++ kóbinese C tiliniń ústingi toplamı dep esaplanadı, biraq bul qatań túrde durıs emes[61]. Kóplegen C kodın C++ te durıs kompilyaciyalanatuǵın etip ańsat keltiriw múmkin, biraq ayırım jaramlı C kodın C++ te jaramsız etetuǵın yamasa basqasha islewine sebep bolatuǵın birneshe ayırmashılıqlar bar. Mısalı, C tili `void` tan basqa kórsetkish tiplerine jasırın túrlendiriwge ruqsat beredi, biraq C++ (tip qáwipsizligi sebepleri boyınsha) ruqsat bermeydi. Sonday-aq, C++ `new` hám `class` sıyaqlı kóp jańa gilt sózlerdi anıqlaydı, olar C programmasında identifikatorlar (mısalı, ózgeriwshi atamaları) retinde qollanılıwı múmkin. Ayırım úylesimsizlikler C standartınıń 1999-jılǵı redakciyası (C99) menen saplastırıldı, ol endi bir qatarlı kommentariyalar (`//`) hám kod penen aralas deklaraciyalar sıyaqlı C++ qásiyetlerin qollap-quwatlaydı. Ekinshi jaǵınan, C99 C++ qollap-quwatlamaytuǵın bir qatar jańa qásiyetlerdi kirgizdi, olar C++ ushın úylesimsiz yamasa artıqsha edi, mısalı: ózgeriwshi uzınlıqtaǵı massivler, jergilikli kompleks san tipleri (degen menen, C++ standart kitapxanasındaǵı `std::complex` klassı uqsas funkcionallıqtı usınadı, biraq kod penen úylesimli emes), belgilengen inicializatorlar, qurama literallar hám `restrict` gilt sózi.[75] C99 tárepinen kirgizilgen ayırım ózgeshelikler C++ standartınıń kelesi versiyası, C++11 ge kirgizildi (artıqsha bolmaǵanlarınan)[62][63][64]. Degen menen, C++11 standartı jańa úylesimsizliklerdi kirgizedi, mısalı, simvollıq kórsetkishke qatar literalın menshiklewge tıyım salıw, bul C de durıs bolıp qala beredi. C hám C++ kodların aralastırıw ushın, C hám C++ tillerinde shaqırılatuǵın/qollanılatuǵın hár qanday funkciya járiyalanıwı yamasa anıqlaması C baylanısına iye ekenligin kórsetiw ushın `extern "C" {/.../}` blogı ishinde járiyalanıwı kerek. Bunday funkciya atamalardı ózgertiwge baylanıslı qásiyetlerge (yaǵnıy, funkciyanı qayta júklewge) súyene almaydı. Ishki assemblerC yamasa C++ tilinde islep shıǵılǵan programmalar kóbinese ónimlilikti optimallastırıw zárúr bolǵanda, joqarı dárejeli programmalastırıw tillerine[65][66] salıstırǵanda tómengi dárejedegi funkcionallıqlar, joqarıraq tezlik hám keńeytilgen basqarıw imkaniyatlarınan paydalanıw ushın ishki assemblerdi qollanadı. C++ `asm` járiyalawların[67] qollanıp, assembler kodın ornatıwdı qollap-quwatlaydı, biraq ishki assemblerdiń úylesimliligi kompilyatorlar hám arxitekturalar arasında aytarlıqtay dárejede ózgeshelenedi. Python yamasa Java sıyaqlı joqarı dárejeli tillerdiń qásiyetlerinen ayırmashılıǵı, assembler kodı tiykarǵı processorǵa hám kompilyator implementaciyasına júdá ǵárezli boladı. Kompilyatorlar arasındaǵı ayırmashılıqlarHár qıylı C++ kompilyatorları ishki assemblerdi hár qıylı usıllar menen ámelge asıradı.
C++ hám Assembler arasındaǵı óz-ara islesiwC++ ASM kodın integraciyalawdıń eki tiykarǵı usılın usınadı. 1. Óz aldına assembler faylları – Assembler kodı bólek jazıladı hám C++ kodı menen baylanıstırıladı[73]. 2. Ishki assembler – Assembler kodı kompilyatorǵa tán keńeytpeler arqalı C++ kodı ishine kiritiledi.
// main.cpp
import std;
extern "C" int add_asm(int, int); // Assembler funkciyasın járiyalaw
int main()
{
int result = add_asm(5, 7);
std::println("ASM-nen alınǵan nátiyje: {}", result);
return 0;
}
# RISC-V arxitekturasın qollanıp jazılǵan asm kod
.section .text
.global add_asm
add_asm:
add a0, a0, a1 # Birinshi argumentti (a0) hám ekinshi argumentti (a1) qosıp, nátiyjeni a0 ge saqlaw
ret # Qaytarıw (a0 qaytarılatuǵın mánisti saqlaydı)
// main.cpp
import std;
extern "C" int global_var; // Assemblerden global ózgeriwshini járiyalaw
int main()
{
std::println("ASM-nen alınǵan global ózgeriwshi: {}", global_var);
return 0;
}
# RISC-V arxitekturasın qollanıp jazılǵan asm
.section .data
.global global_var
.align 4
global_var:
.word 42 # Pútin san mánisin belgilew
// main.cpp (GCC/CLANG kompilyatorın qollanıp)
import std;
int main()
{
int x = 10, y = 20, sum;
asm volatile (
"add %0, %1, %2"
: "=r" (sum) // Shıǵarıw operandı (registrde saqlanadı)
: "r" (x), "r" (y) // Kirgiziw operandları (registrlerde saqlanadı)
);
std::println("Ishki ASM arqalı alınǵan summa: {}", sum);
return 0;
}
Derekler
|