{"id":29810,"date":"2025-09-20T02:00:33","date_gmt":"2025-09-19T23:00:33","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/llvm-derleme-ve-ilk-dummy-passiniz\/"},"modified":"2025-09-20T02:00:33","modified_gmt":"2025-09-19T23:00:33","slug":"llvm-derleme-ve-ilk-dummy-passiniz","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/llvm-derleme-ve-ilk-dummy-passiniz\/","title":{"rendered":"LLVM Derleme ve \u0130lk Dummy Pass&#8217;\u0131n\u0131z"},"content":{"rendered":"<p>LLVM Derleme ve \u0130lk Dummy Pass&#8217;\u0131n\u0131z<\/p>\n<p>LLVM&#8217;i derlemek ve ilk basit ge\u00e7idinizi (dummy pass) olu\u015fturmak, derleyici yap\u0131s\u0131na giri\u015f i\u00e7in harika bir ba\u015flang\u0131\u00e7 noktas\u0131d\u0131r. Bu makale, LLVM&#8217;in temellerini \u00f6\u011frenmenize ve kendi ge\u00e7idinizi yaz\u0131p \u00e7al\u0131\u015ft\u0131rman\u0131za ad\u0131m ad\u0131m rehberlik edecektir.  LLVM&#8217;in g\u00fc\u00e7l\u00fc ara\u00e7lar\u0131n\u0131 kullanarak kod optimizasyonlar\u0131, yeni dil deste\u011fi ekleme veya tamamen yeni bir derleyici olu\u015fturma gibi hedeflere ula\u015fabilirsiniz. Hadi ba\u015flayal\u0131m!<\/p>\n<h2>LLVM Nedir ve Neden \u00d6nemlidir?<\/h2>\n<p>LLVM (Low Level Virtual Machine), bir dizi derleyici altyap\u0131s\u0131 projesini kapsayan bir a\u00e7\u0131k kaynak projesidir.  Bir\u00e7ok programlama dilinin derlenmesi i\u00e7in kullan\u0131lan bir ara temsil (IR) sa\u011flar. Bu IR, platformdan ba\u011f\u0131ms\u0131zd\u0131r, yani ayn\u0131 LLVM IR kodu farkl\u0131 mimarilerde (x86, ARM, RISC-V vb.) \u00e7al\u0131\u015ft\u0131r\u0131labilir. Bu ta\u015f\u0131nabilirlik, LLVM&#8217;i \u00e7ok \u00e7e\u015fitli uygulamalar i\u00e7in son derece de\u011ferli k\u0131lar.  LLVM&#8217;in \u00f6nemi, sadece bir derleyici olmad\u0131\u011f\u0131, ayn\u0131 zamanda mod\u00fcler bir mimariye sahip olmas\u0131 ve geni\u015fletilebilir olmas\u0131d\u0131r.  Kendi ge\u00e7itlerinizi yazarak, derleme s\u00fcrecinin her a\u015famas\u0131n\u0131 kontrol edebilir ve \u00f6zelle\u015ftirebilirsiniz. \u00d6rne\u011fin, belirli bir programlama diline yeni \u00f6zellikler eklemek veya belirli bir i\u015flemcide performans\u0131 optimize etmek i\u00e7in LLVM ge\u00e7itleri kullanabilirsiniz.  Daha derinlemesine bilgi i\u00e7in  (https:\/\/fatihsoysal.com) adresini ziyaret edebilirsiniz.  <\/p>\n<h2>LLVM&#8217;i Derlemek: Ad\u0131m Ad\u0131m K\u0131lavuz<\/h2>\n<p>LLVM&#8217;in derlenmesi i\u015fletim sisteminize ve tercih etti\u011finiz derleyiciye ba\u011fl\u0131 olarak de\u011fi\u015fiklik g\u00f6sterebilir.  Genellikle, kaynak kodunu indirmeniz, ba\u011f\u0131ml\u0131l\u0131klar\u0131 kurman\u0131z ve yap\u0131land\u0131rma komutlar\u0131n\u0131 \u00e7al\u0131\u015ft\u0131rman\u0131z gerekir.  Linux sistemlerde genellikle a\u015fa\u011f\u0131daki ad\u0131mlar izlenir. Ba\u015flamadan \u00f6nce, geli\u015ftirme ara\u00e7lar\u0131n\u0131n (make, cmake, bir C++ derleyicisi gibi) sisteminize kurulu oldu\u011fundan emin olun.  <\/p>\n<ol>\n<li><strong>Kaynak Kodunu \u0130ndirin:<\/strong>  LLVM&#8217;in resmi web sitesinden en son kaynak kodunu indirin.  Git kullan\u0131yorsan\u0131z, a\u015fa\u011f\u0131daki komutla klonlayabilirsiniz:  <code>git clone https:\/\/github.com\/llvm\/llvm-project.git<\/code><\/li>\n<li><strong>Ba\u011f\u0131ml\u0131l\u0131klar\u0131 Kurun:<\/strong>  LLVM&#8217;in derlenmesi i\u00e7in baz\u0131 ba\u011f\u0131ml\u0131l\u0131klara ihtiyac\u0131 olabilir. Bu ba\u011f\u0131ml\u0131l\u0131klar, sisteminizde zaten mevcut olabilir veya paket y\u00f6neticisi arac\u0131l\u0131\u011f\u0131yla kurman\u0131z gerekebilir (\u00f6rne\u011fin, apt, yum, pacman).  LLVM&#8217;in yap\u0131land\u0131rma komutlar\u0131 eksik ba\u011f\u0131ml\u0131l\u0131klar\u0131 tespit edip size bildirecektir.<\/li>\n<li><strong>Yap\u0131land\u0131rma:<\/strong>  LLVM&#8217;in kaynak kod dizinine gidin ve CMake&#8217;i kullanarak projeyi yap\u0131land\u0131r\u0131n. Bu ad\u0131m, derleme i\u015flemini \u00f6zelle\u015ftirmenize olanak tan\u0131r. \u00d6rne\u011fin: <code>cmake -DLLVM_ENABLE_PROJECTS=\"clang;llvm\" -DCMAKE_BUILD_TYPE=Release .<\/code>  (Burada <code>Release<\/code> yerine <code>Debug<\/code> kullanarak hata ay\u0131klama bilgisine sahip bir derleme elde edebilirsiniz).  <\/li>\n<li><strong>Derleme:<\/strong>  Yap\u0131land\u0131rma tamamland\u0131ktan sonra, derlemeyi ba\u015flatmak i\u00e7in <code>make<\/code> komutunu \u00e7al\u0131\u015ft\u0131r\u0131n. Bu i\u015flem uzun s\u00fcrebilir ve sisteminizin \u00f6zelliklerine ba\u011fl\u0131 olarak de\u011fi\u015fir.  <code>make -j$(nproc)<\/code>  komutu, i\u015flemcilerinizi tam olarak kullanarak derleme s\u00fcrecini h\u0131zland\u0131rabilir.<\/li>\n<li><strong>Kurulum:<\/strong>  Derleme ba\u015far\u0131l\u0131 bir \u015fekilde tamamland\u0131ktan sonra, <code>sudo make install<\/code> komutuyla LLVM&#8217;i sisteminize kurabilirsiniz. <\/li>\n<\/ol>\n<p>Windows veya macOS sistemlerinde derleme ad\u0131mlar\u0131 biraz farkl\u0131l\u0131k g\u00f6sterebilir. LLVM&#8217;in resmi dok\u00fcmanlar\u0131nda i\u015fletim sisteminize \u00f6zg\u00fc ayr\u0131nt\u0131l\u0131 talimatlar\u0131 bulabilirsiniz.<\/p>\n<h2>\u0130lk Dummy Pass&#8217;\u0131n\u0131z\u0131 Yazmak<\/h2>\n<p>\u015eimdi, LLVM&#8217;in g\u00fc\u00e7l\u00fc taraf\u0131n\u0131 ke\u015ffetmek i\u00e7in ilk basit ge\u00e7idimizi yazal\u0131m. Bu ge\u00e7it, LLVM IR kodunda dola\u015facak ve sadece bir mesaj yazd\u0131racakt\u0131r. Bu, LLVM API&#8217;sini anlaman\u0131n ve kendi ge\u00e7itlerinizi olu\u015fturman\u0131n temelini olu\u015fturacakt\u0131r.<\/p>\n<pre><code class=\"language-cpp\">#include \"llvm\/IR\/IRBuilder.h\"\n#include \"llvm\/IR\/Module.h\"\n#include \"llvm\/Pass.h\"\n#include \"llvm\/Support\/raw_ostream.h\"\n\nnamespace {\n  struct HelloPass : public llvm::PassInfoMixin<HelloPass> {\n    void run(llvm::Module &M) override {\n      llvm::outs() << \"Hello from my first LLVM pass!\\n\";\n    }\n  };\n}\n\nextern \"C\" llvm::PassPluginLibraryInfo LLVMGetPassPluginInfo() {\n  return {\n    LLVM_PLUGIN_API_VERSION,\n    \"HelloPass\",\n    LLVM_VERSION_STRING,\n    [](llvm::PassBuilder &#038;PB) {\n      PB.registerPass([]() { return std::make_unique<HelloPass>(); });\n    }\n  };\n}<\/pre>\n<p><\/code><\/p>\n<p>Bu kod, LLVM'in temel ge\u00e7it yap\u0131s\u0131n\u0131 g\u00f6stermektedir. <code>HelloPass<\/code> s\u0131n\u0131f\u0131, <code>run<\/code> fonksiyonuyla LLVM mod\u00fcl\u00fcn\u00fc i\u015fler ve ekrana bir mesaj yazd\u0131r\u0131r.  <code>LLVMGetPassPluginInfo<\/code> fonksiyonu ise LLVM'e bu ge\u00e7idi nas\u0131l y\u00fckleyip kullanaca\u011f\u0131n\u0131 s\u00f6yler.  Bu kodu derleyip LLVM'e entegre ettikten sonra, herhangi bir LLVM IR dosyas\u0131n\u0131 i\u015fleyen bir komutta bu ge\u00e7idi \u00e7al\u0131\u015ft\u0131rabilirsiniz.  Bu i\u015flem, ge\u00e7idin do\u011fru \u00e7al\u0131\u015f\u0131p \u00e7al\u0131\u015fmad\u0131\u011f\u0131n\u0131 kontrol etmenize olanak tan\u0131r.  Hata ay\u0131klama i\u00e7in <code>Debug<\/code> yap\u0131land\u0131rma ile derleme yapman\u0131z \u00f6nerilir.<\/p>\n<h3>LLVM Pass'lerini Anlamak<\/h3>\n<p>LLVM pass'leri, LLVM IR koduna de\u011fi\u015fiklikler uygulamaya yarayan fonksiyonlard\u0131r.  Bir\u00e7ok farkl\u0131 tipte pass mevcuttur: Analiz pass'leri (kodu analiz edip bilgi toplarlar), d\u00f6n\u00fc\u015f\u00fcm pass'leri (kodu de\u011fi\u015ftirirler) ve optimizasyon pass'leri (performans\u0131 art\u0131rmak i\u00e7in kodu optimize ederler).  Kendi pass'inizi yazarken, hangi tip pass yazaca\u011f\u0131n\u0131za ve hangi LLVM API fonksiyonlar\u0131n\u0131 kullanaca\u011f\u0131n\u0131za karar vermelisiniz. LLVM'in geni\u015f ve g\u00fc\u00e7l\u00fc API'si, karma\u015f\u0131k kod d\u00f6n\u00fc\u015f\u00fcmlerini bile ger\u00e7ekle\u015ftirmenize olanak tan\u0131r.<\/p>\n<h2>LLVM Pass Geli\u015ftirme: \u0130leri Seviye Teknikler<\/h2>\n<p>Basit bir \"Merhaba D\u00fcnya\" ge\u00e7idinden \u00f6teye ge\u00e7mek i\u00e7in, daha ileri d\u00fczey teknikleri \u00f6\u011frenmeniz gerekecektir.  Bunlar, LLVM IR'\u0131n derinlemesine anla\u015f\u0131lmas\u0131n\u0131, LLVM API'sindeki \u00e7e\u015fitli fonksiyonlar\u0131 ve veri yap\u0131lar\u0131n\u0131 kullanmay\u0131 ve hata ay\u0131klama tekniklerini i\u00e7erir. \u00d6rne\u011fin, daha karma\u015f\u0131k bir ge\u00e7it, belirli bir kod par\u00e7as\u0131n\u0131 bulup de\u011fi\u015ftirmek, de\u011fi\u015fkenleri yeniden adland\u0131rmak veya kontrol ak\u0131\u015f\u0131n\u0131 d\u00fczenlemek i\u00e7in LLVM IR'\u0131 do\u011frudan manip\u00fcle edebilir.<\/p>\n<p><strong>\u00d6rnek Senaryo:<\/strong> Bir ge\u00e7it yazmak istedi\u011finizi d\u00fc\u015f\u00fcn\u00fcn ki bu ge\u00e7it, d\u00f6ng\u00fcler i\u00e7indeki gereksiz i\u015flemleri tespit edip ortadan kald\u0131rarak kodu optimize etsin. Bunun i\u00e7in LLVM IR'\u0131 analiz etmeli, d\u00f6ng\u00fcleri tan\u0131mlamal\u0131, d\u00f6ng\u00fc i\u00e7indeki i\u015flemleri analiz etmeli ve gereksiz olanlar\u0131 kald\u0131rmak i\u00e7in LLVM'in sa\u011flad\u0131\u011f\u0131 fonksiyonlar\u0131 kullanmal\u0131s\u0131n\u0131z. Bu, LLVM IR'\u0131n yap\u0131s\u0131na,  de\u011fi\u015fiklikleri g\u00fcvenli bir \u015fekilde nas\u0131l uygulayaca\u011f\u0131n\u0131za ve olas\u0131 yan etkileri nas\u0131l \u00f6nleyece\u011finize dair derin bir anlay\u0131\u015f gerektirir.<\/p>\n<h3>Performans Analizi ve Optimizasyon<\/h3>\n<p>LLVM pass'leri yazarken, performans kritik bir fakt\u00f6rd\u00fcr.  Yazarak olu\u015fturdu\u011funuz ge\u00e7idin performans\u0131n\u0131 analiz etmek ve iyile\u015ftirmek i\u00e7in \u00e7e\u015fitli y\u00f6ntemler vard\u0131r. Profil olu\u015fturma ara\u00e7lar\u0131n\u0131 kullanarak ge\u00e7idin hangi b\u00f6l\u00fcmlerinin zaman ald\u0131\u011f\u0131n\u0131 belirleyebilirsiniz. Ayr\u0131ca, kodunuzu optimize etmek i\u00e7in LLVM'in kendi optimizasyon pass'lerini kullanabilirsiniz.  LLVM'in mod\u00fcler yap\u0131s\u0131, kendi ge\u00e7itlerinizi mevcut optimizasyonlarla birle\u015ftirmenize olanak tan\u0131r.  Bu, geli\u015ftirdi\u011finiz ge\u00e7itler i\u00e7in \u00f6nemli bir performans art\u0131\u015f\u0131 sa\u011flayabilir.<\/p>\n<h2>Ger\u00e7ek D\u00fcnya Vaka Analizi:  Bir Kod Optimizasyon Ge\u00e7idi<\/h2>\n<p>\u015eimdi, bir ger\u00e7ek d\u00fcnya senaryosunu ele alal\u0131m:  bir kod optimizasyon ge\u00e7idi.  Bu ge\u00e7it, temel aritmetik i\u015flemleri basitle\u015ftirmeyi ama\u00e7layacakt\u0131r.  \u00d6rne\u011fin, <code>x + 0<\/code> ifadesini <code>x<\/code> olarak, <code>x * 1<\/code> ifadesini <code>x<\/code> olarak de\u011fi\u015ftirecektir.  Bu, gereksiz i\u015flemleri kald\u0131rarak performans\u0131 art\u0131rabilir.  Bu ge\u00e7idi geli\u015ftirmek i\u00e7in LLVM IR'\u0131 derinlemesine anlamam\u0131z ve aritmetik i\u015flemleri tan\u0131mak ve d\u00f6n\u00fc\u015ft\u00fcrmek i\u00e7in LLVM API'sini kullanmam\u0131z gerekecektir.<\/p>\n<p>Bu t\u00fcr bir ge\u00e7it, b\u00fcy\u00fck miktarda aritmetik i\u015flem i\u00e7eren uygulamalar i\u00e7in performans iyile\u015ftirmesi sa\u011flayabilir. \u00d6rne\u011fin, bilimsel hesaplamalar, oyun motorlar\u0131 veya sinyal i\u015fleme uygulamalar\u0131 i\u00e7in faydal\u0131 olabilir.  Ancak, bu ge\u00e7idin uygulanmas\u0131, yanl\u0131\u015fl\u0131kla do\u011fru kodun de\u011fi\u015ftirilmemesini sa\u011flamak i\u00e7in dikkatli bir \u015fekilde yap\u0131lmal\u0131d\u0131r. Bu nedenle, kapsaml\u0131 testler yapmak \u00e7ok \u00f6nemlidir.<\/p>\n<h2>LLVM ve Ge\u00e7it Geli\u015ftirme: \u00d6\u011frenme Yol Haritas\u0131<\/h2>\n<p>LLVM ve ge\u00e7it geli\u015ftirme konusunda yetkinlik kazanmak i\u00e7in kademeli bir \u00f6\u011frenme yol haritas\u0131 izlemek faydal\u0131d\u0131r:<\/p>\n<h3>Yeni Ba\u015flayanlar \u0130\u00e7in:<\/h3>\n<ul>\n<li>LLVM'in temellerini \u00f6\u011frenin: IR, pass mimarisi, temel API fonksiyonlar\u0131.<\/li>\n<li>Basit bir \"Merhaba D\u00fcnya\" ge\u00e7idi yaz\u0131n ve \u00e7al\u0131\u015ft\u0131r\u0131n.<\/li>\n<li>LLVM'in dok\u00fcmanlar\u0131n\u0131 ve \u00f6rneklerini inceleyin.<\/li>\n<li>K\u00fc\u00e7\u00fck \u00f6l\u00e7ekli ge\u00e7itler geli\u015ftirerek deneyim kazan\u0131n.<\/li>\n<\/ul>\n<h3>Orta Seviye:<\/h3>\n<ul>\n<li>LLVM IR'\u0131n derinlemesine anla\u015f\u0131lmas\u0131:  talimatlar, veri tipleri, kontrol ak\u0131\u015f\u0131.<\/li>\n<li>Daha karma\u015f\u0131k ge\u00e7itler geli\u015ftirme: kod analiz, d\u00f6n\u00fc\u015f\u00fcm, optimizasyon.<\/li>\n<li>Hata ay\u0131klama teknikleri:  LLVM'in hata ay\u0131klama ara\u00e7lar\u0131n\u0131 kullanma.<\/li>\n<li>Performans analizi ve optimizasyon teknikleri.<\/li>\n<\/ul>\n<h3>\u0130leri Seviye:<\/h3>\n<ul>\n<li>LLVM'in geli\u015fmi\u015f API fonksiyonlar\u0131n\u0131 \u00f6\u011frenme.<\/li>\n<li>Yeni dil deste\u011fi ekleme.<\/li>\n<li>LLVM'e yeni bir arka u\u00e7 (back-end) ekleme.<\/li>\n<li>Karma\u015f\u0131k optimizasyon algoritmalar\u0131 geli\u015ftirme.<\/li>\n<li>LLVM toplulu\u011funa katk\u0131da bulunma.<\/li>\n<\/ul>\n<h2>Sonu\u00e7<\/h2>\n<p>Bu makale, LLVM'i derleme ve ilk dummy pass'\u0131n\u0131z\u0131 olu\u015fturma s\u00fcrecini ad\u0131m ad\u0131m a\u00e7\u0131klam\u0131\u015ft\u0131r.  LLVM, g\u00fc\u00e7l\u00fc ve esnek bir derleyici altyap\u0131s\u0131d\u0131r ve kendi ge\u00e7itlerinizi geli\u015ftirerek derleme s\u00fcrecini \u00f6zelle\u015ftirebilir ve optimize edebilirsiniz.  Ancak, LLVM'in karma\u015f\u0131k bir yap\u0131ya sahip oldu\u011funu ve uzmanl\u0131k gerektiren bir alan oldu\u011funu unutmay\u0131n.  Sab\u0131r ve s\u00fcrekli \u00f6\u011frenme ile LLVM'in g\u00fc\u00e7l\u00fc ara\u00e7lar\u0131n\u0131 kullanarak kod optimizasyonu, yeni dil deste\u011fi ekleme veya tamamen yeni bir derleyici olu\u015fturma gibi hedeflere ula\u015fabilirsiniz. Daha fazla bilgi i\u00e7in (https:\/\/fatihsoysal.com) adresini ziyaret edebilirsiniz. <\/p>\n<h3>S\u0131k\u00e7a Sorulan Sorular<\/h3>\n<ul>\n<li><strong>LLVM'i derlemek ne kadar s\u00fcrer?<\/strong> Derleme s\u00fcresi, sisteminizin \u00f6zelliklerine ve kullan\u0131lan derleyiciye ba\u011fl\u0131 olarak de\u011fi\u015fir. Birka\u00e7 dakikadan birka\u00e7 saate kadar s\u00fcrebilir.<\/li>\n<li><strong>LLVM hangi i\u015fletim sistemlerinde \u00e7al\u0131\u015f\u0131r?<\/strong> LLVM, Linux, Windows, macOS ve di\u011fer bir\u00e7ok i\u015fletim sisteminde \u00e7al\u0131\u015f\u0131r.<\/li>\n<li><strong>LLVM \u00f6\u011frenmek zor mu?<\/strong> Evet, LLVM karma\u015f\u0131k bir yap\u0131ya sahiptir ve \u00f6\u011frenmesi zaman ve \u00e7aba gerektirir. Ancak, ad\u0131m ad\u0131m ilerleyerek ve bolca pratik yaparak LLVM'i \u00f6\u011frenebilirsiniz.<\/li>\n<li><strong>LLVM ge\u00e7itleri hangi programlama dillerinde yaz\u0131labilir?<\/strong> LLVM ge\u00e7itleri genellikle C++ kullan\u0131larak yaz\u0131l\u0131r, ancak di\u011fer diller de kullan\u0131labilir.<\/li>\n<li><strong>LLVM'i kullanarak neler yapabilirim?<\/strong> LLVM, kod optimizasyonu, yeni programlama dilleri geli\u015ftirme, yeni i\u015flemci mimarileri i\u00e7in derleyici olu\u015fturma ve daha bir\u00e7ok alanda kullan\u0131labilir.<\/li>\n<\/ul>\n<p>Yazar: Fatih Soysal<\/p>\n","protected":false},"excerpt":{"rendered":"LLVM Derleme ve \u0130lk Dummy Pass&#8217;\u0131n\u0131z LLVM&#8217;i derlemek ve ilk basit ge\u00e7idinizi (dummy pass) olu\u015fturmak, derleyici yap\u0131s\u0131na giri\u015f&hellip;","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1],"tags":[],"class_list":{"0":"post-29810","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-genel","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>LLVM Derleme ve \u0130lk Dummy Pass&#039;\u0131n\u0131z<\/title>\n<meta name=\"description\" content=\"LLVM&#039;i derlemek ve ilk basit ge\u00e7idinizi (dummy pass) olu\u015fturmak, derleyici yap\u0131s\u0131na giri\u015f i\u00e7in harika bir ba\u015flang\u0131\u00e7 noktas\u0131d\u0131r. Bu makale, LLVM&#039;in temellerini \u00f6\u011frenmenize ve kendi ge\u00e7idinizi yaz\u0131p \u00e7al\u0131\u015ft\u0131rman\u0131za ad\u0131m ad\u0131m rehberlik edecektir. LLVM&#039;in g\u00fc\u00e7l\u00fc ara\u00e7lar\u0131n\u0131 kullanarak kod optimizasyonlar\u0131, yeni dil deste\u011fi ekleme veya tamamen yeni bir derleyici olu\u015fturma gibi hedeflere ula\u015fabilirsiniz. Hadi ba\u015flayal\u0131m!\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/llvm-derleme-ve-ilk-dummy-passiniz\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"LLVM Derleme ve \u0130lk Dummy Pass&#039;\u0131n\u0131z\" \/>\n<meta property=\"og:description\" content=\"LLVM&#039;i derlemek ve ilk basit ge\u00e7idinizi (dummy pass) olu\u015fturmak, derleyici yap\u0131s\u0131na giri\u015f i\u00e7in harika bir ba\u015flang\u0131\u00e7 noktas\u0131d\u0131r. Bu makale, LLVM&#039;in temellerini \u00f6\u011frenmenize ve kendi ge\u00e7idinizi yaz\u0131p \u00e7al\u0131\u015ft\u0131rman\u0131za ad\u0131m ad\u0131m rehberlik edecektir. LLVM&#039;in g\u00fc\u00e7l\u00fc ara\u00e7lar\u0131n\u0131 kullanarak kod optimizasyonlar\u0131, yeni dil deste\u011fi ekleme veya tamamen yeni bir derleyici olu\u015fturma gibi hedeflere ula\u015fabilirsiniz. Hadi ba\u015flayal\u0131m!\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/llvm-derleme-ve-ilk-dummy-passiniz\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-09-19T23:00:33+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/llvm-derleme-ve-ilk-dummy-passiniz\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/llvm-derleme-ve-ilk-dummy-passiniz\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"LLVM Derleme ve \u0130lk Dummy Pass&#8217;\u0131n\u0131z\",\"datePublished\":\"2025-09-19T23:00:33+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/llvm-derleme-ve-ilk-dummy-passiniz\/\"},\"wordCount\":1586,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/llvm-derleme-ve-ilk-dummy-passiniz\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/llvm-derleme-ve-ilk-dummy-passiniz\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/llvm-derleme-ve-ilk-dummy-passiniz\/\",\"name\":\"LLVM Derleme ve \u0130lk Dummy Pass'\u0131n\u0131z\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-09-19T23:00:33+00:00\",\"description\":\"LLVM'i derlemek ve ilk basit ge\u00e7idinizi (dummy pass) olu\u015fturmak, derleyici yap\u0131s\u0131na giri\u015f i\u00e7in harika bir ba\u015flang\u0131\u00e7 noktas\u0131d\u0131r. Bu makale, LLVM'in temellerini \u00f6\u011frenmenize ve kendi ge\u00e7idinizi yaz\u0131p \u00e7al\u0131\u015ft\u0131rman\u0131za ad\u0131m ad\u0131m rehberlik edecektir. LLVM'in g\u00fc\u00e7l\u00fc ara\u00e7lar\u0131n\u0131 kullanarak kod optimizasyonlar\u0131, yeni dil deste\u011fi ekleme veya tamamen yeni bir derleyici olu\u015fturma gibi hedeflere ula\u015fabilirsiniz. Hadi ba\u015flayal\u0131m!\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/llvm-derleme-ve-ilk-dummy-passiniz\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/llvm-derleme-ve-ilk-dummy-passiniz\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/llvm-derleme-ve-ilk-dummy-passiniz\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"LLVM Derleme ve \u0130lk Dummy Pass&#8217;\u0131n\u0131z\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"LLVM Derleme ve \u0130lk Dummy Pass'\u0131n\u0131z","description":"LLVM'i derlemek ve ilk basit ge\u00e7idinizi (dummy pass) olu\u015fturmak, derleyici yap\u0131s\u0131na giri\u015f i\u00e7in harika bir ba\u015flang\u0131\u00e7 noktas\u0131d\u0131r. Bu makale, LLVM'in temellerini \u00f6\u011frenmenize ve kendi ge\u00e7idinizi yaz\u0131p \u00e7al\u0131\u015ft\u0131rman\u0131za ad\u0131m ad\u0131m rehberlik edecektir. LLVM'in g\u00fc\u00e7l\u00fc ara\u00e7lar\u0131n\u0131 kullanarak kod optimizasyonlar\u0131, yeni dil deste\u011fi ekleme veya tamamen yeni bir derleyici olu\u015fturma gibi hedeflere ula\u015fabilirsiniz. Hadi ba\u015flayal\u0131m!","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/llvm-derleme-ve-ilk-dummy-passiniz\/","og_locale":"tr_TR","og_type":"article","og_title":"LLVM Derleme ve \u0130lk Dummy Pass'\u0131n\u0131z","og_description":"LLVM'i derlemek ve ilk basit ge\u00e7idinizi (dummy pass) olu\u015fturmak, derleyici yap\u0131s\u0131na giri\u015f i\u00e7in harika bir ba\u015flang\u0131\u00e7 noktas\u0131d\u0131r. Bu makale, LLVM'in temellerini \u00f6\u011frenmenize ve kendi ge\u00e7idinizi yaz\u0131p \u00e7al\u0131\u015ft\u0131rman\u0131za ad\u0131m ad\u0131m rehberlik edecektir. LLVM'in g\u00fc\u00e7l\u00fc ara\u00e7lar\u0131n\u0131 kullanarak kod optimizasyonlar\u0131, yeni dil deste\u011fi ekleme veya tamamen yeni bir derleyici olu\u015fturma gibi hedeflere ula\u015fabilirsiniz. Hadi ba\u015flayal\u0131m!","og_url":"https:\/\/fatihsoysal.com\/blog\/llvm-derleme-ve-ilk-dummy-passiniz\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-09-19T23:00:33+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"3 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/llvm-derleme-ve-ilk-dummy-passiniz\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/llvm-derleme-ve-ilk-dummy-passiniz\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"LLVM Derleme ve \u0130lk Dummy Pass&#8217;\u0131n\u0131z","datePublished":"2025-09-19T23:00:33+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/llvm-derleme-ve-ilk-dummy-passiniz\/"},"wordCount":1586,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/llvm-derleme-ve-ilk-dummy-passiniz\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/llvm-derleme-ve-ilk-dummy-passiniz\/","url":"https:\/\/fatihsoysal.com\/blog\/llvm-derleme-ve-ilk-dummy-passiniz\/","name":"LLVM Derleme ve \u0130lk Dummy Pass'\u0131n\u0131z","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-09-19T23:00:33+00:00","description":"LLVM'i derlemek ve ilk basit ge\u00e7idinizi (dummy pass) olu\u015fturmak, derleyici yap\u0131s\u0131na giri\u015f i\u00e7in harika bir ba\u015flang\u0131\u00e7 noktas\u0131d\u0131r. Bu makale, LLVM'in temellerini \u00f6\u011frenmenize ve kendi ge\u00e7idinizi yaz\u0131p \u00e7al\u0131\u015ft\u0131rman\u0131za ad\u0131m ad\u0131m rehberlik edecektir. LLVM'in g\u00fc\u00e7l\u00fc ara\u00e7lar\u0131n\u0131 kullanarak kod optimizasyonlar\u0131, yeni dil deste\u011fi ekleme veya tamamen yeni bir derleyici olu\u015fturma gibi hedeflere ula\u015fabilirsiniz. Hadi ba\u015flayal\u0131m!","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/llvm-derleme-ve-ilk-dummy-passiniz\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/llvm-derleme-ve-ilk-dummy-passiniz\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/llvm-derleme-ve-ilk-dummy-passiniz\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"LLVM Derleme ve \u0130lk Dummy Pass&#8217;\u0131n\u0131z"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/29810","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=29810"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/29810\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=29810"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=29810"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=29810"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}