CND yra Python kodo iki šaltinio vertėjas, kuris leidžia naudojant n-vienmačių masyvų C maloniau & nbsp; Jis pavirs šį kodą.:
negaliojančiu sgemm (float *, plūdė * b, plūdė * c, int n)
{
& Nbsp; dimensija "Fortran" [n, n];
& Nbsp; dimensija "Fortran" b [n, n];
& Nbsp; matmuo c [n, n];
& Nbsp; (int i = 1; i <= n; ++ i)
& Nbsp; (int j = 1; j <= n; ++ j)
& Nbsp; {
& Nbsp; float tmp = 0;
& Nbsp; (int k = 1; k <= n; ++ k)
& Nbsp; tmp + = [i k] * b [K, J];
& Nbsp; c [i-1, j-1] = tmp;
& Nbsp;}
}
į šį:
negaliojančiu sgemm (float *, plūdė * b, plūdė * c, int n)
{
& Nbsp; (int i = 1; i <= n; ++ i)
& Nbsp; (int j = 1; j <= n; ++ j)
& Nbsp; {
& Nbsp; float tmp = 0;
& Nbsp; (int k = 1; k <= n; ++ k)
& Nbsp; tmp + = [((k - 1) * ((n - 1) + 1)) + (i - 1)] * b [((j - 1) * ((n - 1) + 1) ) + (k - 1)];
& Nbsp; c [((i - 1) * n) + (j - 1)] = tmp;
& Nbsp;}
}
Jūs taip pat gali pažvelgti į išsamesnę pavyzdžiui atrodo, kad rodo keletą papildomų varpų ir švilpukų.
Tik poveikis aspektą deklaracija yra modifikuoti masyvo (IDX) indekso operatoriaus aiškinimą. dimensija deklaracijos paklusti reguliariai C Apimties taisykles.
Aš taip pat norėčiau atkreipti dėmesį, kad CND yra patikimas, analizatorius pagrindu vertėjas, ne keistokas teksto pakeitimą įrankis. Jis supranta visus C99, plius daug GNU plėtinius.
Kiekvienas ašis specifikacija aspektą deklaracija turi tokią formą:
pradėti: Pabaiga: Stride: leading_dimension
pradžia gali būti praleisti. pabaigos ir žingsnis gali būti praleistas, bet jei įrašai po jų turi būti nurodyta jų svyruojančiosios dvitaškiai turi likti vietoje. Pavyzdžiui, ašis specifikacija: 5 paprasčiausiai nurodo iš 5. žingsnį Stride tiesiog veikia kaip dėl indeksą daugiklis. Nėra tikėtinumo patikrinimus kokia yra padaryta dėl matmenų deklaracijoje. Jūs galite šaudyti sau į koją bet kaip jums patinka.
Jei išdėstymas pateikiamas kaip "c", ar ne tikrą ne visi šie dalykai yra tiesa:
- Masyvas yra išdėstyti eilutėse-dur tvarka.
- Galutinis indeksas laikomas išskirtiniu, jei nurodyta.
- Pradėti puslapis nutylėjimą 0.
Jei išdėstymas yra nurodytas kaip "Fortran", šie dalykai yra tiesa:
- Masyvas yra išdėstyti stulpelyje-dur tvarka.
- Galutinis indeksas laikomas įskaičiuota, jei nurodyta.
- Pradėti puslapis nutylėjimą 1 d.
(Dauguma) žinių esančio dimensija deklaracija gali būti reobtained programiškai iki follwing funkcijas:
- Rankof (a)
- Nitemsof (a)
- Lboundof (a, ašis)
- Uboundof (, ašis) (grąžina vartotojui nurodyta viršutinė riba)
- Puboundof (a, ašis) (grąžina indeksą tiesiog pro ašiai pabaigoje)
- Ldimof (a, ašis)
- Strideof (a, ašis)
Kiekvienu atveju, ašis turi būti pastovus sveikasis skaičius (ne konstanta išraiška, paprasto sveikasis skaičius).
Diegimas / naudojimas
Jūs galite gauti CND atsisiuntę archyvą iš paketo rodyklę, arba iš GitHub:
& Nbsp; git klonas git: //github.com/inducer/cnd.git
& Nbsp; CD CND
git init submodulis
& Nbsp; git submodulis atnaujinimas
Norėdami naudoti CND, paprasčiausiai pridėkite paskirstymo-dir / bin į savo kelią.
Norėdami pradėti, tiesiog paleisti (nuo per CND root):
& nbsp; cd pavyzdžiai
& Nbsp; ../ bin / cndcc gcc -std = c99 basic.c
& Nbsp; ./ a.out
Jei norėtumėte daugiau smulkiagrūdės kontroliuoti vertimo proceso, CND komanda atskleidžia tik šaltinis-to-šaltinio vertimą. Atkreipkite dėmesį, kad CND tikisi preprocessed šaltinį. Jūs galite pereiti parinktį -E turėti CND paleisti procesorių savo šaltinio už jus. Pradėti:
& Nbsp; CND -h
gauti visą pagalbos komandų eilutės sąsaja. Jūs galite nustatyti CND_CPP aplinkos kintamąjį į preprocesoriaus norite naudoti.
Kas naujo , šioje laidoje:
- Sintaksė pokytis nuo [i; j] į [i, j] .
- dar analizatorius parama realaus gyvenimo antraštes.
Reikalavimai :
- Python
Komentarai nerastas