Intel kompilyatorları. Yeni kompilyatorlara nə üçün ehtiyac var idi?

Intel C++ və Fortran tərtibçiləri və MKL kitabxanası

Linux üçün standart GNU kompilyatorları ilə yanaşı, NIVC hesablama kompleksinin klasterlərində Intel C++ və Fortran kompilyatorları quraşdırılmışdır. Hazırda (2006-cı ilin əvvəli) kompilyatorların 9.1 versiyası bütün klasterlərdə quraşdırılmışdır. Bu səhifə bu kompilyatorların ən vacib variantlarını və parametrlərini, habelə onların GNU tərtibçilərindən əsas fərqlərini təsvir etməyə həsr edilmişdir. Səhifə əsasən MDU Tədqiqat Hesablama Mərkəzinin klasterlərinin istifadəçiləri üçün nəzərdə tutulub, lakin digər rusdilli istifadəçilər üçün də faydalı ola bilər. IA-64 platforması üçün kompilyasiya ilə bağlı məsələlər burada həll edilmir.

Həmçinin, Intel kitabxanası bütün klasterlərdə quraşdırılmışdır Kernel Riyaziyyat Kitabxanası(MKL) versiyası 8.0.2. Kitabxana /usr/mkl qovluğunda yerləşir. Nəzərə alın ki, 32, 64 və em64t alt kataloqları lib kataloqunda mövcuddur. Ant klasterində siz em64t alt kataloqunun kitabxanalarından, digər klasterlərdə isə 32 alt kataloqunun kitabxanalarından istifadə etməlisiniz.Bütün lazımi sənədləri və nümunələri /usr/mkl/doc kataloqundan əldə etmək olar.

Yeni kompilyatorlara nə üçün ehtiyac var idi?

Yeni kompilyatorlara ehtiyac əsasən a) Fortran 90-da proqramlaşdırmanı dəstəkləmək və həmçinin b) Fortran proqramlarının C-yə tərcüməni və sonra gcc istifadə edərək tərtibini istifadə edən g77 kompilyatorunun təmin etdiyindən daha güclü optimallaşdırılması üçün yaranmışdır.

PGI (Portland Group) kompilyatorları da bu tələblərə cavab verir, lakin tərtibatçı şirkət onları Rusiyaya tədarük etməkdən imtina edib.

Necə istifadə etməli?

Intel kompilyatorları əmrlərdən istifadə edərək çağırılır icc(C və ya C++), icpc(C++) və ifort(Fortran 77/90). MPI proqramlarının tərtibi və yığılması üçün mpicc, mpiCC və mpif77 əmrləri də Intel kompilyatorlarından istifadə etmək üçün konfiqurasiya edilmişdir.

Həmçinin mpigcc, mpig++ və mpig77 əmrlərindən istifadə etməklə GNU kompilyatorlarından istifadə etmək mümkündür (Fortran 90 dəstəklənmir).

Giriş faylları

Varsayılan olaraq, uzantılı fayllar .cpp.cxx C++ dilində mənbə mətnlər, uzantılı fayllar hesab edilir .c- C mənbə kodu və icpc tərtibçisi də .c fayllarını C++ mənbə kodu kimi tərtib edir.

Uzantıları olan fayllar .f, .ftn.üçün sabit qeyd forması və faylları olan Fotran dilində mənbə mətnlər kimi tanınır .fpp.Fəlavə olaraq Fortran dilinin preprosessorundan keçir. Uzantısı olan fayllar .f90 sərbəst forma notasiyası ilə Fortran 90/95 mənbə mətnləri hesab olunur. Seçimlərdən istifadə edərək Fortran proqramları üçün sabit və ya pulsuz qeyd formasını açıq şəkildə təyin edə bilərsiniz -FI-FR müvafiq olaraq.

Uzantısı olan fayllar .s IA-32 üçün montaj dili kodu kimi tanınır.

Intel Kompilyator Xüsusiyyətləri

Burada biz bəzi şərhlərimizlə istifadəçi təlimatında tərtibatçı tərəfindən ifadə edilən Intel kompilyatorlarının xüsusiyyətlərini təqdim edirik.

  • Əhəmiyyətli optimallaşdırma
    Görünür, bu, kodun yüksək səviyyədə optimallaşdırılması deməkdir, yəni. ilk növbədə, demək olar ki, bütün kompilyatorların daha çox və ya daha az müvəffəqiyyətlə etdiyi müxtəlif döngə çevrilmələri
  • Üzən nöqtənin optimallaşdırılması
    Göründüyü kimi, bu, ilk növbədə, aparat səviyyəsində həyata keçirilən əmrlərdən maksimum istifadə deməkdir
  • Prosedurlararası optimallaşdırmalar
    olanlar. yalnız xüsusi funksiyaların koduna təsir edən adi optimallaşdırmadan fərqli olaraq bütün proqramın qlobal optimallaşdırılması
  • Profilə əsaslanan optimallaşdırma
    olanlar. Proqramı test rejimində işlətmək, tez-tez istifadə olunan funksiyalar daxilində müəyyən kod fraqmentlərini ötürmək üçün lazım olan vaxt haqqında məlumat toplamaq və sonra bu məlumatları optimallaşdırmaq üçün istifadə etmək imkanı.
  • Pentium III prosessorlarında SSE təlimat dəstinə dəstək
    Qeyd: hesablama tapşırıqları üçün SSE2 əmrləri daha çox maraq doğurur, yəni. vektor əmrləri 64 bitlik real ədədlər üzərindədir, lakin onlar yalnız Pentium 4 prosessorlarında dəstəklənir, hələ bizim ixtiyarımızda deyil.
  • Avtomatik vektorlaşdırma
    olanlar. yenidən SSE və SSE2 əmrlərindən istifadə edərək, kompilyator tərəfindən avtomatik daxil edilir
  • SMP sistemlərində proqramlaşdırma üçün OpenMP dəstəyi
    Qeyd: klasterdə ilk növbədə MPI interfeysindən istifadə etmək tövsiyə olunur; klasterdə OpenMP-nin geniş istifadəsi gözlənilmir və bu cür təcrübələr hələ həyata keçirilməyib; lakin çox güman ki, ortaq yaddaş üçün paralelləşdirilmiş kitabxanalardan (BLAS və s.) istifadə etmək məntiqlidir.
  • Məlumatların əvvəlcədən götürülməsi
    olanlar. Göründüyü kimi, yaddaşdan məlumatların önbelleğine əvvəlcədən yükləmə əmrlərinin istifadəsi bir müddət sonra lazım olacaq
  • Müxtəlif prosessorlar üçün "Dispetçerlik" kodu
    olanlar. istifadə etməyə imkan verən tək icra olunan faylda müxtəlif prosessorlar üçün kod yaratmaq imkanı son prosessorlar proqramların əvvəlki prosessorlarla binar uyğunluğunu qoruyaraq, onlar üzrə ən yüksək performansa nail olmaq; Bizim klasterimizdə bu hələ aktual deyil, çünki yalnız Pentium III prosessorları istifadə olunur və klasterdə tərtib edilmiş proqramların başqa maşınlarda ötürülməsi və işləməsi nəzərdə tutulmur.

Əsas kompilyator variantları

Ən maraqlısı, əlbəttə ki, kodun optimallaşdırılması variantlarıdır. Seçimlərin əksəriyyəti C++ və Fortran kompilyatorları üçün ümumidir. Daha çox Ətraflı Təsviriİngilis istifadəçi təlimatlarında seçimlər.

Optimallaşdırma səviyyələri
SeçimTəsvir
-O0Optimallaşdırmanı söndürür
-O1 və ya -O2Sürət üçün əsas optimallaşdırma. Kitabxana funksiyalarının daxili daxil edilməsi qeyri-aktiv edilib. C++ kompilyatoru üçün bu seçimlər eyni optimallaşdırmanı təmin edir; Fortran kompilyatoru üçün -O2 seçiminə üstünlük verilir, çünki dövrü təşviqi də daxildir.
-O3Döngə çevrilmələri, məlumatların əvvəlcədən alınması və OpenMP-dən istifadə daxil olmaqla daha güclü optimallaşdırmalar. Bəzi proqramlar ilə müqayisədə təkmilləşdirilmiş performansa zəmanət verməyə bilər -O2. Vektorlaşdırma variantları ilə birlikdə istifadə etmək məntiqlidir -xK-xW.
-açmaq[n]n dəfəyə qədər döngənin açılmasını aktivləşdirir.
Müəyyən bir prosessor üçün optimallaşdırmalar
SeçimTəsvir
-tpp6Penitum Pro, Pentium II və Pentium III prosessorları üçün optimallaşdırma
-tpp7Penitum 4 prosessorları üçün optimallaşdırma (bu seçim IA-32 kompilyatoru üçün standart olaraq aktivdir)
-xMPentium MMX, Pentium II və sonrakı prosessorlara xas olan MMX genişləndirmələrindən istifadə edərək kodun yaradılması
-xKPentium III prosessorlarına xas olan SSE genişlənmələrindən istifadə edərək kodun yaradılması
-xWPentium 4 prosessorlarına xas olan SSE2 genişləndirmələrindən istifadə edərək kodun yaradılması
Prosedurlararası optimallaşdırma
-ipProsedurlararası optimallaşdırma bir fayl daxilində aktivləşdirilir. Variantını qeyd etsəniz -ip_no_inlining, sonra daxili funksiya əlavələri deaktiv edilir.
-ipoMüxtəlif fayllar arasında prosedurlararası optimallaşdırmaya imkan verir
Profillərdən istifadə edərək optimallaşdırmalar
-prof_genProfil yaratmaq üçün istifadə ediləcək "profilləşdirmə" kodu yaradılır, yəni. proqramda müəyyən yerlərin keçmə tezliyi haqqında məlumatların toplanması
-prof_useOptimallaşdırma profilləşdirmə mərhələsində əldə edilən məlumatlar əsasında həyata keçirilir. Onu prosedurlararası optimallaşdırma seçimi ilə birlikdə istifadə etmək məna kəsb edir -ipo.
SMP sistemləri üçün paralelləşdirmə
-openmpOpenMP 2.0 standartı üçün dəstəyi təmin edir
-paralelDöngələrin avtomatik paralelləşdirilməsi aktivləşdirilib

Performans

İxbt.com serverində dərc edilmiş SPEC CPU2000 testlərinin nəticələrinə görə, Intel tərtibçilərinin 6.0 versiyası gcc kompilyatorlarının 2.95.3, 2.96 və 3.1 versiyaları və PGI 4.0.2 versiyası ilə müqayisədə demək olar ki, universal olaraq daha yaxşı idi. Bu sınaqlar 2002-ci ildə Pentium 4/1.7 GHz prosessoru və RedHat Linux 7.3-ə malik kompüterdə aparılıb.

Polyhedron tərəfindən aparılmış testlərə görə, Intel Fortran kompilyator versiyası 7.0 demək olar ki, universal olaraq Linux üçün digər Fortran 77 kompilyatorlarından (Absoft, GNU, Lahey, NAG, NAS, PGI) üstün idi. Yalnız bəzi testlərdə Intel kompilyatoru Absoft, NAG və Lahey kompilyatorlarından bir qədər aşağıdır. Bu testlər Pentium 4/1.8 GHz prosessoru və Mandrake Linux 8.1 ilə işləyən kompüterdə aparılıb.

Intel kompilyatorlarının 9.1 versiyası da gcc kompilyatorlarını üstələyir və Absoft, PathScale və PGI ilə müqayisə olunan performans göstərir.

Bizə kompilyator (GCC və ya Intel) seçiminin və optimallaşdırma seçimlərinin onların real həyat problemləri üzərində iş sürətinə təsiri haqqında məlumat göndərən istifadəçilərə və oxuculara minnətdar olacağıq.

Kitabxanalar

C dili kompilyatoru GNU layihəsi çərçivəsində hazırlanmış iş vaxtı kitabxanasından istifadə edir ( libc.a).

Aşağıdakı kitabxanalar Intel C++ kompilyatoru ilə təchiz edilmişdir:

  • libcprts.a- Dinkumware tərəfindən hazırlanmış iş vaxtı C++ dil kitabxanası.
  • libcxa.a- Intel tərəfindən C++ inkişafı üçün əlavə iş vaxtı kitabxanası.
  • libimf.a- Intel tərəfindən hazırlanmış, triqonometrik, hiperbolik, eksponensial, xüsusi, mürəkkəb və digər funksiyaların optimallaşdırılmış və yüksək dəqiqlikli tətbiqlərini ehtiva edən riyazi funksiyalar kitabxanası (ətraflı məlumat üçün funksiyaların siyahısına baxın).
  • libirc.a- prosessordan asılı olaraq profilləşdirmə (PGO) və kod göndərilməsi üçün iş vaxtı dəstəyi (yuxarıya baxın).
  • libguide.a- OpenMP tətbiqi.

Bu siyahıda statik kitabxanalar var, lakin onların əksəriyyəti üçün dinamik olanlar da var, yəni. başlanğıc zamanı qoşulmuş seçimlər ( .belə ki).

Aşağıdakı kitabxanalar Fortran kompilyatoru ilə təchiz edilmişdir: libCEPCF90.a, libIEPCF90.a, libintrins.a, libF90.a, libimf.a riyazi funksiyalar kitabxanasından da istifadə olunur.

İcra edilə bilən faylın qurulması

Kitabxanalar statik (qurulma zamanı) və ya dinamik (proqramın işə salınması zamanı) bağlana bilər. Dinamik yanaşma icra olunan faylın ölçüsünü azaltmağa imkan verir və kitabxananın eyni nüsxəsini yaddaşda paylaşmağa imkan verir, lakin bunun üçün proqramların işlədiləcəyi hər bir qovşaqda istifadə olunan dinamik kitabxanaların tam dəstini quraşdırmaq lazımdır. .

Beləliklə, əgər siz Intel kompilyatorunu Linux kompüterinizdə quraşdırmısınızsa və tərtib edilmiş icra edilə bilən faylları digər maşınlarda işə salmaq istəyirsinizsə, ya statik quruluşdan istifadə etməlisiniz (bu daha asandır) və ya Intel dinamik kitabxanalarını bu maşınlara kopyalamalısınız (adətən aşağıdakılardan /opt/intel /compiler70/ia32/lib) kimi bir kataloqu /etc/ld.so.conf faylında sadalanan qovluqlardan birinə köçürün və eyni zamanda GNU/Linux dinamik kitabxanalarının eyni dəstinin bunlarda quraşdırıldığından əmin olun. maşınlar.

Varsayılan olaraq, bütün Intel inkişaf kitabxanaları (libcxa.so istisna olmaqla) statik olaraq əlaqələndirilir və bütün Linux sistem kitabxanaları və GNU kitabxanaları dinamik şəkildə əlaqələndirilir. Seçimdən istifadə etməklə -statik siz kollektoru (link redaktoru) bütün kitabxanaları statik olaraq birləşdirməyə məcbur edə bilərsiniz (bu, həcmi artıracaq) icra edilə bilən fayl) və seçimdən istifadə edin -i_dinamik Siz bütün Intel inkişaf kitabxanalarını dinamik şəkildə əlaqələndirə bilərsiniz.

Görünüş seçimindən istifadə edərək əlavə kitabxanaları birləşdirərkən -kitabxana seçimindən istifadə etməli ola bilərsiniz -Kataloq kitabxanaların yerləşdiyi yolu müəyyən etmək üçün.

Seçimlərdən istifadə -Bstatik-Bdinamik-də göstərilən kitabxanaların hər birinin dinamik və ya statik əlaqəsini açıq şəkildə təyin edə bilərsiniz komanda xətti.

Seçimdən istifadə etməklə -c icra olunan faylın yığılması dayandırılır və yalnız kompilyasiya yerinə yetirilir (obyekt modulunun yaradılması).

Fortran və C-də modulların paylaşılması

Fortran və C-də yazılmış modulları paylaşmaq üçün obyekt modullarında prosedurların adlandırılması, parametrlərin ötürülməsi və əgər varsa, qlobal dəyişənlərə giriş haqqında razılaşmaq lazımdır.

Varsayılan olaraq, Intel Fortran tərtibçisi prosedur adlarını kiçik hərflərə çevirir və adın sonuna alt xətt əlavə edir. C kompilyatoru heç vaxt funksiya adlarını dəyişdirmir. Beləliklə, əgər biz Fortran modulundan C-də həyata keçirilən FNNAME funksiyasını və ya prosedurunu çağırmaq istəyiriksə, onda C modulunda onu fnname_ adlandırmaq lazımdır.

Fortran kompilyatoru seçimi dəstəkləyir -nus [fayl adı], bu, daxili prosedur adlarına alt xətt əlavə edilməsini söndürməyə imkan verir. Əgər fayl adı göstərilibsə, bu, yalnız göstərilən faylda sadalanan prosedur adları üçün edilir.

Varsayılan olaraq, Fortran-da parametrlər istinadla, C-də isə həmişə dəyərlə ötürülür. Beləliklə, bir C modulundan Fortran prosedurunu çağırarkən, parametrlər kimi faktiki parametrlərin dəyərlərini ehtiva edən müvafiq dəyişənlərə göstəriciləri ötürməliyik. Fortran modulundan çağırılmalı olan funksiyanı C dilində yazarkən biz formal parametrləri müvafiq tiplərə göstəricilər kimi təsvir etməliyik.

C modullarında Fortran modullarında müəyyən edilmiş ÜMUMİ bloklardan istifadə etmək mümkündür (ətraflı məlumat üçün Intel Fortran Kompilyatorunun İstifadəçi Təlimatına, C və Fortran Qarışıqları bölməsinə baxın).

Intel və GCC kompilyatorlarının paylaşılması

Intel C++ kompilyatoru tərəfindən istehsal edilən C obyekt modulları GCC kompilyatoru və GNU C kitabxanası tərəfindən hazırlanmış modullarla uyğun gəlir. Beləliklə, bu modullar icc və ya gcc əmrləri ilə tərtib edilmiş vahid proqramda birlikdə istifadə edilə bilər, lakin Intel kitabxanalarını düzgün daxil etmək üçün icc-dən istifadə etmək tövsiyə olunur.

Intel kompilyatoru GNU layihəsi tərəfindən istifadə edilən və GCC kompilyatoru tərəfindən dəstəklənən bir sıra qeyri-standart C dili uzantılarını dəstəkləyir (lakin onların hamısı deyil, daha ətraflı məlumat üçün buraya baxın).

İstifadəçi təlimatı C++ və Fortran dillərində obyekt modullarının uyğunluğu haqqında heç nə demir, görünür, dəstəklənmir.

Standart dəstəyi

Linux üçün Intel C++ Compiler 7.0 ANSI/ISO C dil standartını (ISO/IEC 9899/1990) dəstəkləyir. ANSI C standartı ilə ciddi uyğunluq qurmaq mümkündür ( -ansi) və ya uzadılmış ANSI C dialekti ( -Xa). Seçimdən istifadə edərkən -c99

  • HTML formatında tərtibçi təlimatları (serverimizdə "onlayn" mövcuddur, lakin Java dil dəstəyi tələb olunur)
    • Intel C++ Compiler İstifadəçi Təlimatı.
    • Intel Fortran Compiler İstifadəçi Təlimatı.
  • Kompilyator üçün təlimatlar Ingilis dili PDF formatında (Acrobat Reader tələb olunur, PDF fayllarını kompüterinizə yükləməlisiniz)
    • Intel C++ Compiler İstifadəçi Təlimatı: Intel C++ Kompilyator İstifadəçi Təlimatı (1.3 MB, 395 səhifə).
    • Intel Fortran Compiler İstifadəçi Təlimatı: Intel Fortran Compiler İstifadəçi Təlimatı (1.1 MB, 285 səhifə).
    • Fortran-da Proqramçı Referansı: Intel Fortran Proqramçı Referansı (7 MB, 566 səhifə).
    • Fortran dili üçün kitabxanalara istinad: Intel Fortran Libraries Reference Manual (9.5 MB, 881 səhifə).
  • Intel Tətbiq Debugger Bələdçisi.
  • SPEC CPU2000 testlərində kompilyatorların müqayisəsi (ixbt.com saytında rus dilində məqalə).
  • Polyhedron veb-saytı müxtəlif tərtibçilər arasında müqayisə nəticələrini təqdim edir.
  • Jurnalın əvvəlki sayında biz Intel VTune Performance Analyzer ailəsinin məhsullarını - proqram tərtibatçıları arasında layiqincə populyar olan və kodda aşkarlanmağa imkan verən performans təhlili alətlərini müzakirə etdik. komanda tətbiqləri inkişaf etdiricilərə potensialı müəyyən etmək və aradan qaldırmaq imkanı verən çox CPU resursunu sərf edən dar yerlər, kodun oxşar bölmələri ilə əlaqələndirilir və bununla da tətbiqin inkişaf prosesini sürətləndirir. Bununla belə, nəzərə alın ki, tətbiqlərin performansı onların işlənib hazırlanmasında istifadə olunan kompilyatorların nə qədər səmərəli olmasından və hansı xüsusiyyətlərdən asılıdır. aparat onlar maşın kodunu yaradan zaman istifadə olunur.

    Windows və Linux üçün Intel Intel C++ və Intel Fortran kompilyatorlarının ən son versiyaları sizə aşağıdakılara əsaslanan sistemlər üçün proqram performansı üstünlükləri əldə etməyə imkan verir. Intel prosessorları Itanium 2, Intel Xeon və Intel Pentium Bu prosessorların Hyper-Threading texnologiyası kimi xüsusiyyətlərinin istifadəsi səbəbindən digər istehsalçıların mövcud kompilyatorları ilə müqayisədə 4-dən 40% -ə qədər.

    Bu kompilyatorlar ailəsi tərəfindən kodun optimallaşdırılması ilə bağlı fərqlər arasında üzən nöqtə əməliyyatlarını yerinə yetirmək üçün yığının istifadəsi, prosedurlararası optimallaşdırma (IPO), tətbiq profilinə uyğun optimallaşdırma (Profilin idarəolunan optimallaşdırılması (PGO), məlumatların önbelleğe yüklənməsi (PGO) daxildir. Yaddaş girişi ilə bağlı gecikmənin qarşısını alan verilənlərin əvvəlcədən alınması), Intel prosessorlarının xarakterik xüsusiyyətlərinə dəstək (məsələn, məlumatların axın emalı üçün genişlənmələr Intel Streaming SIMD Extensions 2, Intel Pentium 4 üçün xarakterik), kodun icrasının avtomatik paralelləşdirilməsi, tətbiqetmə yaradılması, bir neçə üzərində işləyir fərqli növlər onlardan biri üçün optimallaşdırarkən prosessorlar, sonrakı kodu "proqnozlaşdırmaq" üçün alətlər (filial proqnozu), icra ipləri ilə işləmək üçün genişləndirilmiş dəstək.

    Qeyd edək ki, Intel kompilyatorlarından Alias/Wavefront, Oracle, Fujitsu Siemens, ABAQUS, Silicon Graphics, IBM kimi tanınmış şirkətlərdə istifadə olunur. Bir sıra şirkətlər tərəfindən aparılan müstəqil sınaqlara əsasən, Intel kompilyatorlarının performansı digər istehsalçıların kompilyatorlarının performansından əhəmiyyətli dərəcədə yüksəkdir (bax, məsələn, http://intel.com/software/products/compilers/techtopics/compiler_gnu_perf .pdf).

    Aşağıda bəzi xüsusiyyətlərə baxacağıq son versiyalar Masaüstü və server üçün Intel kompilyatorları əməliyyat sistemləri.

    Microsoft Windows platforması üçün kompilyatorlar

    Windows üçün Intel C++ Compiler 7.1

    Intel C++ Compiler 7.1 bu ilin əvvəlində buraxılmış kompilyatordur və Intel Itanium, Intel Itanium 2, Intel Pentium 4 və Intel Xeon prosessorları, eləcə də Intel Centrino texnologiyasından istifadə edən Intel Pentium M prosessoru üçün yüksək optimallaşdırılmış kod təmin edir və bu proqramda istifadə üçün nəzərdə tutulub. mobil cihazlar.

    Göstərilən kompilyator Microsoft Visual C++ 6.0 və Microsoft Visual Studio .NET inkişaf alətləri ilə tam uyğundur: o, müvafiq inkişaf mühitlərinə daxil edilə bilər.

    Bu kompilyator ANSI və ISO C/C++ standartlarını dəstəkləyir.

    Windows üçün Intel Fortran Compiler 7.1

    Bu ilin əvvəlində də buraxılmış Windows üçün Intel Fortran Compiler 7.1 sizə Intel Itanium, Intel Itanium 2, Intel Pentium 4 və Intel Xeon, Intel Pentium M prosessorları üçün optimallaşdırılmış kod yaratmağa imkan verir.

    Bu kompilyator Microsoft Visual C++ 6.0 və Microsoft Visual Studio .NET inkişaf alətləri ilə tam uyğundur, yəni müvafiq inkişaf mühitlərinə daxil edilə bilər. Bundan əlavə, bu kompilyator 64 bitlik Intel Fortran Kompilyatorundan istifadə edərək 32 bitlik Pentium prosessorunda Microsoft Visual Studio proqramından istifadə etməklə Itanium/Itanium 2 prosessorlarında işləyən əməliyyat sistemləri üçün 64 bit proqramlar hazırlamağa imkan verir. Kodu sazlayarkən, bu tərtibçi sizə sazlayıcıdan istifadə etməyə imkan verir Microsoft platformaları.NET.

    Əgər sizdə Compaq məhsulu quraşdırılıbsa, orijinal Intel Fortran Compiler 7.1 əvəzinə Visual Fortran 6.6 istifadə edilə bilər, çünki bu tərtibçilər səviyyəyə uyğundur. mənbə kodu.

    Windows üçün Intel Fortran Compiler 7.1 ISO Fortran 95 standartı ilə tam uyğun gəlir və iki dildə kodu olan proqramların yaradılmasını və sazlanmasını dəstəkləyir: C və Fortran.

    Linux platforması üçün kompilyatorlar

    Linux üçün Intel C++ Compiler 7.1

    İlin əvvəlində buraxılmış digər kompilyator, Linux üçün Intel C++ Compiler 7.1, Intel Itanium, Intel Itanium 2, Intel Pentium 4, Intel Pentium M prosessorları üçün yüksək kod optimallaşdırılmasına nail olmağa imkan verir.Bu kompilyator tam mənbə kodunda və obyekt modullarında GNU C kompilyatoru ilə uyğun gəlir ki, bu da GNU C-dən istifadə etməklə yaradılmış proqramları əlavə xərc çəkmədən ona köçürməyə imkan verir. altında Linux nəzarəti erkən ŞƏT əməliyyat sistemləri kimi digər platformalar üçün tərtib edilmiş kod, erkən versiyalar Sun Solaris və s.), bu ikili kod səviyyəsində gcc 3.2 kompilyatoru ilə tam uyğunluq deməkdir. Nəhayət, Linux üçün Intel C++ Compiler 7.1 ilə siz hətta mənbə kodunda bir neçə kiçik dəyişiklik etməklə Linux nüvəsini yenidən tərtib edə bilərsiniz.

    Linux üçün Intel Fortran Compiler 7.1

    Linux üçün Intel Fortran Compiler 7.1 sizə Intel Itanium, Intel Itanium 2, Intel Pentium 4, Intel Pentium M prosessorları üçün optimallaşdırılmış kod yaratmağa imkan verir.Bu kompilyator Compaq Visual Fortran 6.6 kompilyatoru ilə mənbə kodu səviyyəsində tam uyğundur və sizə imkan verir. Compaq Visual Fortran istifadə edərək yaradılmış proqramları istifadə edərək yenidən tərtib etmək və bununla da onların performansını artırmaq.

    Bundan əlavə, göstərilən kompilyator emacs redaktoru, gdb debugger və make application build utiliti kimi tərtibatçılar tərəfindən istifadə olunan yardım proqramları ilə uyğun gəlir.

    Bu kompilyatorun Windows versiyası kimi, Linux üçün Intel Fortran Compiler 7.1 də ISO Fortran 95 standartına tam uyğundur və iki dildə kodu olan proqramların yaradılmasını və sazlanmasını dəstəkləyir: C və Fortran.

    Xüsusilə vurğulanmalıdır ki, sadalanan Intel kompilyatorlarının yaradılmasına Nijni Novqoroddakı Intel Rus Proqram təminatının İnkişafı Mərkəzinin mütəxəssisləri mühüm töhfə vermişlər. Daha çox ətraflı məlumat Intel kompilyatorları haqqında məlumatı www.intel.com/software/products/ ünvanındakı Intel veb saytında tapa bilərsiniz.

    Bu məqalənin ikinci hissəsi mobil qurğular üçün proqramlar yaradan Intel kompilyatorlarına həsr olunacaq.

    Həqiqi hack nümunələri: Intel C++ 7.0 Kompilyatoru - WASM.RU Arxivi

    ...Intel C++ 7.0 kompilyatoru gecə gec, səhər təxminən beşdə endirildi. Mən çox yatmaq istəyirdim, amma maraq da məni parçaladı: müdafiə gücləndirilib, ya yox. Qorunma anlayana qədər hələ də yuxuya getməyəcəyimə qərar verərək açdım yeni konsol, və TEMP və TMP sistem dəyişənlərinin C:\TEMP qovluğuna sıfırlanması, tələsik nalayiq şəkildə yazılmışdır uzun ad komanda xəttində quraşdırıcı W_CC_P_7.0.073.exe (TEMP və TMP dəyişənlərinin təyin edilməsi zərurəti onunla izah olunur ki, onlar Windows 2000-də onlar standart olaraq çox dərin daxili qovluğa və Intel C++ quraşdırıcısına işarə edirlər - və təkcə bu deyil. - belə böyük ölçülü yolları dəstəkləmir).

    Dərhal məlum oldu ki, mühafizə siyasəti kökündən yenidən işlənib və indi lisenziyanın olması proqramın quraşdırılması mərhələsində artıq yoxlanılıb (5.x versiyasında quraşdırma problemsiz həyata keçirilib). OK, biz dir əmrini veririk və indi mübarizə aparmalı olduğumuz şeyin məzmununa baxırıq:

      C:\TMP\IntelC++Compiler70 qovluğunun məzmunu

      17.03.2003 05:10

      html

      17.03.2003 05:11

      x86

      17.03.2003 05:11

      İtanium

      17.03.2003 05:11

      qeydlər

      06/05/2002 10:35 45 056 AutoRun.exe

      07/10/2001 12:56 27 autorun.inf

      29.10.2002 11:25 2 831 ccompindex.htm

      24.10.2002 08:12 126 976 ChkLic.dll

      18/10/2002 22:37 552 960 chklic.exe

      17/10/2002 16:29 28 663 CLicense.rtf

      17.10.2002 16:35 386 credist.txt

      16.10.2002 17:02 34 136 Crellnotes.htm

      19/03/2002 14:28 4 635 PLSuite.htm

      21/02/2002 12:39 2 478 register.htm

      02.10.2002 14:51 40 960 Setup.exe

      02.10.2002 10:40 151 Setup.ini

      07/10/2001 12:56 184 quraşdırma.mwg

      19 fayl 2.519.238 bayt

      6 qovluq 886.571.008 bayt pulsuz

    Bəli! Setup.exe quraşdırma proqramı yalnız qırx tək kilobayt çəkir. Çox yaxşı! Belə bir həcmdə ciddi müdafiəni gizlədə bilməyəcəyiniz ehtimalı azdır və belə olsa belə, bu kiçik faylı bütövlükdə təhlil etmək üçün heç bir dəyər yoxdur - sökücü siyahısının son baytına qədər. Bununla belə, bu bir fakt deyil Təhlükəsizlik kodu tam olaraq setup.exe-də yerləşir, başqa yerdə yerləşə bilər, məsələn... ChkLic.dll/ChkLic.exe, birlikdə yeddi yüz kilobaytdan bir qədər az yer tutur. Gözləyin, ChkLic nədir? Bu, Check License üçün qısadır, yoxsa nə?! Hmm, Intel-dən olan uşaqların yumor hissi ilə bağlı ciddi problemləri var. Bu faylı insafla "Hack Me" adlandırsalar daha yaxşı olar! Tamam, həcminə görə, ChkLic eyni FLEX lm-dir və biz onunla artıq qarşılaşmışıq (bax "Intel C++ 5.0 Compiler") və onu necə pozmaq barədə təxmini təsəvvürümüz var.

    İxrac edilən funksiyaları yoxlamaq üçün “dumpbin /EXPORTS ChkLic.dll” əmrini veririk və... kreslodan düşməmək üçün Klavadan möhkəm yapışın:

      ChkLic.dll faylının atılması

    1. Bölmə ChkLic.dll üçün aşağıdakı ixracları ehtiva edir

      0 xüsusiyyətləri

      3DB438B4 vaxt tarix möhürü Bazar 21 Oktyabr 21:26:12 2002

    2. 1 sayda funksiya

      1 ədəd ad

      sıra işarəsi RVA adı

      1 0 000010A0 _CheckValidLicense

    Lənət olsun! Qoruma CheckValidLicense gözəl adı ilə yalnız bir funksiyanı ixrac edir. "Gözəl" - çünki funksiyanın məqsədi onun adından aydın olur və sökmə kodunun zəhmətli təhlilindən qaçmaq mümkün olur. Yaxşı, onlar bütün maraqlarını itirdilər... onu adi qaydada və ya başqa bir şəkildə ixrac etsələr və ya heç olmasa DES Decrypt kimi bir növ qorxuducu adla vəftiz etsələr daha yaxşı olardı.

    ...xəyal qurmaq! Yaxşı, gəlin qoyunlarımıza qayıdaq. Gəlin məntiqlə düşünək: əgər bütün təhlükəsizlik kodu birbaşa ChkLic.dll-də cəmləşibsə (və mühafizənin “menteşəli” xarakterinə görə, bu, həqiqətən də belədir), onda bütün “qorunma” Setup-dan CheckValidLicense-i çağırmağa gəlir. exe və onun qaytardığı nəticəni yoxlayın. Buna görə də, “sındırmaq” üçün ChkLic.dll-ni itirmək kifayətdir, ChekValidLicense funksiyasını həmişə geri qayıtmağa məcbur etmək... və yeri gəlmişkən, o, nə qaytarmalıdır? Daha dəqiq desək: uğurlu lisenziya yoxlamasına uyğun gələn qaytarma dəyəri nədir? Xeyr, onu müəyyən etmək üçün setup.exe-ni sökməyə tələsməyin, çünki mümkün variantlar artıq çox deyil: ya YANLIŞ, ya da DOĞRU. TRUE-a mərc edirsiniz? Yaxşı, müəyyən mənada bu məntiqlidir, amma digər tərəfdən: niyə biz həqiqətən belə qərara gəldik ki, CheckValidLicense funksiyası xəta kodunu deyil, əməliyyatın müvəffəqiyyətinin tam olaraq bayrağını qaytarır? Axı o, kompilyatoru quraşdırmaqdan imtinanın səbəblərini bir növ motivasiya etməlidir: lisenziyası olan fayl tapılmadı, fayl zədələnib, lisenziyanın müddəti bitib və s. Tamam, sıfırı qaytarmağa çalışaq və bu işə yaramasa, birini qaytaracağıq.

    Yaxşı, bağlayın, gedək! HIEW-i işə salırıq, ChkLic.dll faylını açırıq (açılmırsa, üç dəfə gophers xatırlayırıq, onu müvəqqəti olaraq kökə və ya adında xüsusi simvollar olmayan, hiew bəyənmədiyi hər hansı digər qovluğa köçürün) Sonra yenidən zibil qutusundan istifadə edərək əldə edilən ixrac cədvəlinə keçərək, CheckValidLicense funksiyasının ünvanını təyin edirik (bu halda 010A0h) və “10A0” vasitəsilə onun başlanğıcına keçirik. köhnə kod "XOR EAX, EAX/RETN 4". Nəyə görə sadəcə "RET" yox, məhz "REN 4"? Bəli, çünki funksiya stdcall konvensiyasını dəstəkləyir, onu HIEW"e-də onun epiloquna baxaraq öyrənə bilərsiniz ( sadəcə RET ilə görüşənə qədər sökmə ekranını aşağı sürüşdürün).

    Gəlin yoxlayaq... İşləyir!!! Lisenziyanın olmamasına baxmayaraq, quraşdırıcı heç bir sual vermədən quraşdırmaya başlayır! Buna görə də müdafiə düşdü. Oh, hər şeyin bu qədər sadə olduğuna inana bilmirik və proqramın quraşdırılması prosesinin tamamlanmasını gözləyən monitora baxıb axmaq oturmamaq üçün setup.exe-də sevimli IDA sökücüdən istifadə edirik. Diqqətinizi çəkən ilk şey idxal edilmiş funksiyalar siyahısında CheckValidLicense-in olmamasıdır. Bəlkə birtəhər ChkLic.exe faylını işə salır? Avtomatik olaraq tanınan sətirlər arasında müvafiq keçidi tapmağa çalışırıq: “~View aNames”, “ChkLic”... bəli, “Chklic.exe” xətti ümumiyyətlə yoxdur, lakin “Chklic.dll” aşkarlanıb. Bəli, görürəm, bu o deməkdir ki, ChkLic kitabxanası LoadLibrary vasitəsilə açıq şəkildə əlaqələndirilərək yüklənir. Və çarpaz istinad bunu təsdiqləyir:

      Mətn: 0040175D push ofset aChklic_dll ; lpLibFileName

      Mətn:00401762 zəng ds:LoadLibraryA

      Mətn: 00401762 ; ChkLic.dll yüklə ^^^^^^^^^^^^^^^^^

      Mətn: 00401762 ;

      Mətn:00401768 mov esi, s

      Mətn:0040176A push ofset a_checkvalidlic ; lpProcName

      Mətn: 0040176F push esi ; hModule

      Mətn: 00401770 zəng ds: GetProcAddress

      Mətn: 00401770 ; CheckValidLicense funksiyasının ünvanını əldə edin

      Mətn: 00401770 ;

      Mətn:00401776 cmp esi, ebx

      Mətn:00401778 jz loc_40192E

      Mətn: 00401778 ; belə bir kitabxana yoxdursa, quraşdırma proqramından çıxın

      Mətn: 00401778 ;

      Mətn:0040177E cmp eax, ebx

      Mətn:00401780 jz loc_40192E

      Mətn: 00401780 ; kitabxanada belə bir funksiya yoxdursa, quraşdırmadan çıxın

      Mətn: 00401780 ;

      Mətn: 00401786 push ebx

      Mətn: 00401787 zəng eax

      Mətn: 00401787 ; ChekValidLicense funksiyasına zəng edin

      Mətn: 00401787 ;

      Mətn:00401789 test eax, ec

      Mətn: 0040178B jnz loc_4019A3

    Mətn: 0040178 ; funksiya sıfırdan fərqli olaraq qaytarılıbsa, quraşdırma proqramından çıxın

    İnanılmaz dərəcədə, bu dəhşətli primitiv müdafiə məhz belə qurulub! Üstəlik, yarım metrlik ChkLic.exe faylı ümumiyyətlə lazım deyil! Və niyə onu İnternetdən sürükləməyə dəyərdi? Yeri gəlmişkən, əgər siz kompilyator paylanmasını saxlamaq qərarına gəlsəniz (diqqət: “payla” demədim!), onda disk sahəsinə qənaət etmək üçün ChkLic.* silinə bilər: ya setup.exe faylını silməklə, onu həmişəlik şəbəkədən ayırmaq olar. onlara daxil olmaq və ya sadəcə olaraq öz ChkLic.dll faylınızı yaratmaqla, formada CheckValidLicence stdcall funksiyasını ixrac etməklə: int CheckValidLicence(int some_flag) (qayıt 0;)

    Yaxşı, biz bütün bunları müzakirə edərkən quraşdırıcı kompilyatorun quraşdırılmasını bitirdi və işini uğurla başa vurdu. Maraqlıdır, kompilyator işə başlayacaq, yoxsa bütün əyləncələr yeni başlayır? Biz qızdırmalı şəkildə alt qovluqların şaxələnmiş iyerarxiyasına enirik, gözlənildiyi kimi bin kataloqunda yerləşən icl.exe-ni tapırıq, klikləyirik və... Kompilyator təbii olaraq işə başlamır, "icl: xətası: FLEX lm lisenziyasını yoxlaya bilmədi" , onsuz işini davam etdirə bilməz.

    Belə çıxır ki, Intel çoxsəviyyəli müdafiədən istifadə edib və birinci səviyyə axmaqlara qarşı kobud qorunma olub. Yaxşı! Biz bu çağırışı qəbul edirik və əvvəlki təcrübəmizə əsaslanaraq avtomatik olaraq kompilyator kataloqunda LMGR*.DLL faylını axtarırıq. Yararsız! Bu dəfə burada elə bir fayl yoxdur, amma məlum olur ki, icl.exe altı yüz kilobayt həddi keçərək xeyli çəki alıb... Dayan! Kompilyator tərtibatçıları eyni FLEX lm-ni statik əlaqə ilə əlaqələndirmədilərmi? Baxaq: Intel C++ 5.0-də lmgr327.dll və icl.exe-nin ölçülərinin cəmi 598 KB idi və indi tək icl.exe 684 KB yer tutur. Təbii qocalıq "piylənmə" üçün düzəliş nəzərə alınmaqla, rəqəmlər çox yaxşı uyğun gəlir. Beləliklə, FLEX lm! Oh oh! Amma indi simvolik funksiya adları olmadan qorumanı pozmaq daha çətin olacaq... Bununla belə, vaxtından əvvəl panikaya düşməyək! Gəlin düşünək, sakitcə! İnkişaf qrupunun bu "zərf" mühafizəsi ilə qarşılıqlı əlaqədə olan bütün kodu tamamilə yenidən yazması ehtimalı azdır. Çox güman ki, onun "təkmilləşdirilməsi" yalnız tərtibat tipində dəyişikliklə başa çatdı. Əgər belədirsə, onda proqramı sındırmaq şansı hələ də böyükdür!

    Sonuncu dəfə təhlükəsizlik kodunun əsas funksiyada olduğunu xatırlayaraq, biz onun ünvanını təyin etdikdən sonra sadəcə bir kəsmə nöqtəsi təyin etdik və sazlayıcının görünməsini gözləyərək, axmaqlıqla kodu izləyərək növbə ilə sazlayıcıya, sonra proqramın çıxışına baxırıq. pəncərə: Təhqiredici mesaj varmı? Eyni zamanda, hər bir şərti keçidin həyata keçirilib-keçirilmədiyini qeyd etməyi unutmadan, ayrı-ayrı vərəqdə qarşılaşdığımız bütün şərti keçidləri qeyd edirik (və ya istəsəniz öz yaddaşımıza qoyuruq... Dayan! Siz və mən bir şey haqqında söhbət edirdik, amma təhqiramiz mesaj artıq ortaya çıxdı! OK yaxşı! Baxaq görək hansı şərti keçid ona uyğundur. Bizim qeydlərimiz göstərir ki, rast gəlinən son sıçrayış 0401075h ünvanında yerləşən və sub_404C0E tərəfindən qaytarılan nəticəyə "reaksiya verən" JNZ şərti sıçrayış olub:

  • Mətn:0040107F loc_40107F: ; KOD XREF: _main+75^j

    Mətn:0040107F mov eax, ofset aFfrps ; "FFrps"

    Mətn:00401084 mov edx, 21h

    Mətn: 00401089 sub_404C0E zəng edin

    Mətn:0040108E test eax, eax

    Mətn:00401090 jnz short loc_40109A

    Aydındır ki, sub_404C0E lisenziyanın mövcudluğunu yoxlayan çox qoruyucu prosedurdur. Onu necə aldatmaq olar? Yaxşı, bir çox variant var... Birincisi, sub_404C0E-nin məzmununu düşünərək və diqqətlə təhlil edərək onun dəqiq nəyi yoxladığını və necə dəqiq yoxladığını öyrənə bilərsiniz. İkincisi, siz sadəcə JNZ short loc_40107F-ni JZ short loc_40107F və ya hətta NOP, NOP ilə əvəz edə bilərsiniz. Üçüncüsü, TEST EAX, EAX nəticəsini yoxlamaq əmri sıfır əmrinə çevrilə bilər: XOR EAX, EAX. Dördüncüsü, sub_404C0E-nin özünü yox edə bilərsiniz ki, o, həmişə sıfır qaytarsın. Sizi bilmirəm, amma ən çox üçüncü metodu bəyəndim. Biz iki baytı dəyişirik və kompilyatoru işə salırıq. Qorumada onun "lisenziyasının" başqa yoxlamaları yoxdursa, proqram işləyəcək və müvafiq olaraq əksinə. (Xatırladığımız kimi, beşinci versiyada iki belə yoxlama var idi). Təəccüblüdür ki, kompilyator artıq şikayət etmir və işləyir!!! Həqiqətən də, gözlənildiyi kimi, onun tərtibatçıları müdafiəni heç gücləndirmədilər, əksinə, hətta zəiflətdi! Chris Kaspersky

  • Sən qul deyilsən!
    Elit təbəqənin uşaqları üçün qapalı təhsil kursu: "Dünyanın əsl tənzimləməsi".
    http://noslave.org

    Vikipediyadan material - pulsuz ensiklopediya

    Intel C++ Kompilyatoru
    170-ci sətirdə Modul:Vikiməlumatda Lua xətası: "wikibase" sahəsini indeksləşdirməyə cəhd (sıfır dəyər).
    Növ
    Müəllif

    170-ci sətirdə Modul:Vikiməlumatda Lua xətası: "wikibase" sahəsini indeksləşdirməyə cəhd (sıfır dəyər).

    İnkişaf etdirici
    Tərtibatçılar

    170-ci sətirdə Modul:Vikiməlumatda Lua xətası: "wikibase" sahəsini indeksləşdirməyə cəhd (sıfır dəyər).

    Üzərində yazılmışdır

    170-ci sətirdə Modul:Vikiməlumatda Lua xətası: "wikibase" sahəsini indeksləşdirməyə cəhd (sıfır dəyər).

    İnterfeys

    170-ci sətirdə Modul:Vikiməlumatda Lua xətası: "wikibase" sahəsini indeksləşdirməyə cəhd (sıfır dəyər).

    əməliyyat sistemi
    İnterfeys dilləri

    170-ci sətirdə Modul:Vikiməlumatda Lua xətası: "wikibase" sahəsini indeksləşdirməyə cəhd (sıfır dəyər).

    Birinci nəşr

    170-ci sətirdə Modul:Vikiməlumatda Lua xətası: "wikibase" sahəsini indeksləşdirməyə cəhd (sıfır dəyər).

    Aparat platforması
    Ən son versiya
    Namizədi azad edin

    170-ci sətirdə Modul:Vikiməlumatda Lua xətası: "wikibase" sahəsini indeksləşdirməyə cəhd (sıfır dəyər).

    Beta versiyası

    170-ci sətirdə Modul:Vikiməlumatda Lua xətası: "wikibase" sahəsini indeksləşdirməyə cəhd (sıfır dəyər).

    Alfa versiyası

    170-ci sətirdə Modul:Vikiməlumatda Lua xətası: "wikibase" sahəsini indeksləşdirməyə cəhd (sıfır dəyər).

    Test versiyası

    170-ci sətirdə Modul:Vikiməlumatda Lua xətası: "wikibase" sahəsini indeksləşdirməyə cəhd (sıfır dəyər).

    Oxunan fayl formatları

    170-ci sətirdə Modul:Vikiməlumatda Lua xətası: "wikibase" sahəsini indeksləşdirməyə cəhd (sıfır dəyər).

    Yaradılmış fayl formatları

    170-ci sətirdə Modul:Vikiməlumatda Lua xətası: "wikibase" sahəsini indeksləşdirməyə cəhd (sıfır dəyər).

    dövlət

    170-ci sətirdə Modul:Vikiməlumatda Lua xətası: "wikibase" sahəsini indeksləşdirməyə cəhd (sıfır dəyər).

    Lisenziya

    Əsas xüsusiyyətləri:

    • SSE, SSE2, SSE3, SSE4 üçün vektorlaşdırma

    Kompilyator paralel proqramların yazılması üçün OpenMP 3.0 standartını dəstəkləyir. Həmçinin, OpenMP-nin Cluster OpenMP adlı modifikasiyasını ehtiva edir, onunla MPI istifadə edən klasterlərdə OpenMP-ə uyğun yazılmış proqramları işlədə bilərsiniz.

    Intel C++ Kompilyatoru Edison Design Group-un ön hissəsindən (kompilyatorun tərtib edilmiş proqramı təhlil edən hissəsi) istifadə edir. Eyni frontend SGI MIPSpro, Comeau C++ və Portland Group tərtibçiləri tərəfindən istifadə olunur.

    Bu kompilyator SPEC CPU benchmarklarını tərtib etmək üçün geniş istifadə olunur.

    Kompilyatoru ehtiva edən Intel-dən 4 məhsul seriyası var:

    • Intel C++ Compiler Professional Edition
    • Intel Cluster Toolbar (Tərtibçi Nəşri)

    Kompilyatorun Linux versiyasının çatışmazlıqlarına bəzi proqramların tərtibi zamanı problemlər yarada bilən C dilinin GNU genişlənmələri (GCC tərtibçisi tərəfindən dəstəklənir) ilə qismən uyğunsuzluq daxildir.

    Eksperimental seçimlər

    Kompilyatorun aşağıdakı eksperimental versiyaları nəşr edilmişdir:

    • 17 sentyabr 2007-ci il tarixli Intel STM Compiler Prototype Edition. Proqram Transaction Memory (STM) dəstəyi. Linux və Windows üçün buraxılmışdır, yalnız IA-32 (x86 prosessorları) üçün;
    • 2008-ci ilin sentyabrından C/C++ 0.3 üçün Intel Concurrent Collections. Paralel C++ proqramlarının yazılmasını asanlaşdıran mexanizmləri ehtiva edir.

    Əsas bayraqlar

    Windows Linux, MacOSX Təsvir
    /Od -O0 Optimallaşdırmaları söndürün
    /O1 -O1 İcra edilə bilən fayl ölçüsünü minimuma endirmək üçün optimallaşdırın
    /O2 -O2 Sürət üçün optimallaşdırın. Bəzi optimallaşdırmalar daxildir
    /O3 -O3 O2-dən bütün optimallaşdırmaları aktivləşdirin. Həmçinin intensiv dövr optimallaşdırmaları həyata keçirin
    /Oip -Op Fayl-fayl prosedurlararası optimallaşdırmanı aktivləşdirin
    /Oipo -Yaxşı Qlobal prosedurlararası optimallaşdırmanı aktivləşdirin
    /QxO -xO İstənilən şirkət tərəfindən istehsal olunan prosessorlar üçün SSE3, SSE2 və SSE genişləndirmələrinin istifadəsinə icazə verin
    /sürətli -tez "Sürətli rejim". Windows-da "/O3 /Qipo /QxHost /no-prec-div" və Linux-da "-O3 -ipo -static -xHOST -no-prec-div" seçimlərinə ekvivalentdir. Nəzərə alın ki, “-xHOST” bayrağı kompilyatorun işlədiyi prosessor üçün optimallaşdırma deməkdir.
    /Qprof-gen -prof_gen Performans profilini birləşdirəcək proqramın cihazlaşdırılmış versiyasını yaradın
    /Qprof-istifadə -prof_use prof_gen bayrağı ilə toplanmış proqram başlanğıclarından profil məlumatından istifadə edin.

    "Intel C++ kompilyatoru" məqaləsi haqqında rəy yazın

    Qeydlər

    həmçinin bax

    Bağlantılar

    Intel C++ kompilyatorunu xarakterizə edən çıxarış

    Həm də o, Ağ Maqusunu sonuncu dəfə görmək üçün qayıtdı... Heç vaxt unuda bilmədiyi əri və ən sadiq dostu. Ürəyində onu bağışladı. Lakin o, böyük təəssüf hissi ilə ona Maqdalenanın bağışlanmasını gətirə bilmədi... Beləliklə, gördüyünüz kimi, İsidora, “bağışlanma” haqqında böyük xristian nağılı sadəlövh möminlər üçün uşaqca bir yalandır. hər hansı bir pislik etmək, bilə-bilə ki, nə edirlərsə etsinlər, sonunda bağışlanacaqlar. Siz ancaq bağışlanmağa layiq olanı bağışlaya bilərsiniz. İnsan başa düşməlidir ki, hər hansı bir Pisliyə görə cavab verməlidir... Həm də hansısa sirli Tanrının qarşısında yox, özünü amansız əzablara məcbur edərək. Magdalena Vladykanı bağışlamadı, baxmayaraq ki, ona dərin hörmət bəsləyir və səmimiyyətlə sevirdi. Radomirin dəhşətli ölümünə görə hamımızı bağışlaya bilmədiyi kimi. Axı O, hamıdan yaxşı başa düşürdü - biz ona kömək edə bilərdik, onu amansız ölümdən xilas edə bilərdik... Amma istəmirdik. Ağ Maqusun təqsirini çox qəddar hesab edib, bir dəqiqə belə unutmadan bu təqsiri ilə yaşamağa buraxdı... Ona asan bağışlanmaq istəmədi. Biz onu bir daha görmədik. Necə ki, körpələrini heç görmədilər. Məbədin cəngavərlərindən biri - sehrbazımız - Maqdalena vasitəsilə Vladikanın bizə qayıtmaq xahişinin cavabını çatdırdı: “Günəş eyni gündə iki dəfə doğmur... Sizin dünyanızın (Radomir) sevinci heç vaxt sənə qayıtmaram, necə ki, mən də sənə qayıtmayacağam və mən də... İMAMIMI və HƏQİQİMİ tapdım, onlar diri, səninki isə ÖLÜ... Oğullarına ağla - səni sevirdilər. Mən sağ ikən onların ölümünü səni heç vaxt bağışlamayacağam. Və günahın səninlə qalsın. Ola bilsin ki, bir gün sənə Nur və Bağışlar gətirsin... Amma məndən deyil”. Maqus Conun başını eyni səbəbdən Meteora gətirmədilər - Məbədin Cəngavərlərindən heç biri bizə qayıtmaq istəmədi... Biz də onları itirdik, çünki biz bir dəfədən çox itirmişik, onlar da istəməyənlərdir. qurbanlarımızı anlayın və qəbul edin... Sizin kimi kim etdi - bizi qınayıb getdilər.
    Başım fırlanırdı!.. Susuz bir insan kimi, biliyə olan sonsuz aclığımı yatırdım, Şimalın səxavətlə verdiyi heyrətamiz məlumat axınını acgözlüklə uddum... Və daha çox şey istədim!.. Hər şeyi bilmək istədim. son. Ağrıdan, dərddən yanan səhrada şirin su nəfəsi idi! Və doya bilmədim...
    - Minlərlə sualım var! Amma vaxt qalmayıb... Nə edim, Şimal?..
    - Soruş, İsidora!.. Sor, sənə cavab verməyə çalışacağam...
    – Sever, de görüm, niyə mənə elə gəlir ki, bu hekayə iki həyat hekayəsini birləşdirir, oxşar hadisələrlə iç-içədir və onlar bir insanın həyatı kimi təqdim olunur? Yoxsa mən haqlı deyiləm?
    - Tamamilə haqlısan, İsidora. Bayaq sizə dediyim kimi, bəşəriyyətin yalançı tarixini yaradan “dünyanın gücləri” bir min yarım il əvvəl yaşamış yəhudi peyğəmbəri Yeşuanın yad həyatını Məsihin həqiqi həyatına “qoymuşlar” ( Şimal hekayəsi dövründən). Həm də təkcə özü deyil, həm də ailəsi, qohumları və dostları, dostları və ardıcılları. Axı bu, Yeşua peyğəmbərin arvadı, bir bacısı Marta və bir qardaşı Lazar, anası Mariya Yakobenin bacısı və Radomir və Maqdalenanın yanında olmayan başqaları olan yəhudi Məryəm idi. Necə ki, onların yanında başqa “həvarilər” yox idi - Paul, Matta, Peter, Luka və başqaları...
    Məhz Yeşua peyğəmbərin ailəsi min yarım il əvvəl Provansa (o vaxtlar Transalp Qala adlanırdı), Yunanıstanın Massaliya şəhərinə (indiki Marsel) köçmüşdü, çünki o zaman Massaliya Avropa ilə Asiya arasında “qapı” idi və bu, bütün “təqib olunanlar” üçün təqiblərdən və bəlalardan qaçmaq üçün ən asan yol idi.



    
    Üst