GCC je visoko zmogljiv kodni prevajalnik, ki podpira različne programske jezike in množico procesorskih arhitektur. GCC je ključna komponenta GNU zbirke programskih orodij, je standardni prevajalnik v večini modernih Unixu podobnih operacijskih sistemov in eden od najbolj razširjenih prevajalnikov za procesorje v vgrajenih (embedded) sistemih.
Na tem predavanju se bomo seznanili s kratko zgodovino razvoja prevajalnika, ogledali si bomo njegovo notranjo strukturo, delitev na od izbranega programskega jezika odvisni (front-end) in nedvisni del (middle-end) in nekaj najpomembnejših generičnih optimizacijskih prehodov. Predstavljena bo tudi zgradba procesorsko odvisnega dela (back-end) in generatorja zbirne kode, skupaj z nekaj primeri optimizirane kode.
Na predavanju bomo pogledali tudi v zakulisje razvoja, v odprto skupnost razvijalcev, organizacijo dela v skupnosti in smernice v nadaljnjem razvoju prevajalnika.
Predava Uroš Bizjak, aktivni razvijalec z večletnimi izkušnjami v odprti skupnosti razvijalcev zbirke GNU prevajalnikov. Njegovi prispevki so predvsem v procesorsko odvisnem delu, kjer je vključil SSE instrukcije v generični vektorizator, izvedel generacijo koprocesorjevih specialnih matematičnih instrukcij, ter množica manjših izboljšav in popravkov v prevajalniku. Kot vzdrževalec procesorsko odvisnega dela za x86 procesorje je sodeloval pri podpori x32 ABI, podpori razširitvam nabora instrukcij, npr. advanced vector (AVX/AVX2) razširitev, bit-manipulation (BMI/BMI2) razširitev, in podpori bodoče razširitve za transakcijsko sinhronizacijo (TSX).