Skip to content

Derleyici optimizasyonlarını elle yazmak (Zynq7000 + GCC, -O0) yazısı#147

Draft
Mavrikant wants to merge 2 commits into
masterfrom
claude/determined-feynman-h5g8e1
Draft

Derleyici optimizasyonlarını elle yazmak (Zynq7000 + GCC, -O0) yazısı#147
Mavrikant wants to merge 2 commits into
masterfrom
claude/determined-feynman-h5g8e1

Conversation

@Mavrikant

Copy link
Copy Markdown
Owner

Özet

Temel derleyici optimizasyonlarını Zynq7000 (ARM Cortex-A9) ve GCC örneği üzerinden anlatan, bu optimizasyonları -O0 seviyesinde elle nasıl yazacağını kod örnekleriyle gösteren yeni bir Türkçe blog yazısı.

Yeni dosya: _posts/2026-06-19-gcc-derleyici-optimizasyonlari-zynq7000.md

Çerçeve

Saf pedagojik / performans odaklı: "derleyici senin için ne yapıyor, -O0'da bunu elle nasıl taklit edersin". Mevcut Renode/Zynq7000 ve MISRA C:2025 yazılarına çapraz referans verir.

İçerik

  • -O0'ın temel davranışı (her yerel değişken yığında; sürekli ldr/str)
  • GCC optimizasyon seviyeleri tablosu + boru hattı mermaid diyagramı
  • GCC'nin -O0'da bile yaptıkları (sabit×kuvvet→lsl, sabit÷→sihirli çarpma, unsigned%kuvvet→and, ifade-içi katlama) — boşuna uğraşılmayacak optimizasyonlar
  • Elle yapılması gerekenler: sabit yayma, CSE, LICM (klasik strlen tuzağı dâhil), endüksiyon değişkeni / strength reduction (indeks→işaretçi, sınırı dışarı alma), bellek trafiği, döngü açma, always_inline, büyük struct'ı işaretçiyle geçirme, arama tablosu
  • Cortex-A9 PMU çevrim sayacı (PMCCNTR) ile ölçüm
  • Gerçeklik kontrolü + özet tablo (hangi optimizasyon -O0'da yapılır/yapılmaz, elle nasıl, risk)

Doğrulama

  • Tüm ARM assembly çıktıları gerçek arm-none-eabi-gcc 13.2 (-mcpu=cortex-a9 -mfpu=neon -mfloat-abi=hard -O0) ile üretilip doğrulandı. Öğretici bir bulgu: naif işaretçi yeniden yazımı (p < a + n) -O0'da hiçbir kazanç sağlamıyor — sınır da dışarı alınmalı.
  • bundle exec jekyll build başarılı (exit 0); sayfa /2026/06/19/...html olarak üretildi.
  • Front matter, mermaid, tablolar, kod blokları ve iç bağlantılar render doğrulandı; _site ve Gemfile.lock commit edilmedi.

🤖 Generated with Claude Code

https://claude.ai/code/session_01RjUvxRGLdExFGnzGPpPagB


Generated by Claude Code

claude added 2 commits June 19, 2026 20:43
Temel derleyici optimizasyonlarini ARM Cortex-A9 (Zynq7000) ve GCC ornegi
uzerinden anlatan, bunlari -O0'da elle nasil yazacagini gerçek assembly
ciktilariyla gosteren kapsamli bir Turkce yazi. CSE, LICM, enduksiyon
degiskeni/strength reduction, dongu acma, always_inline, bellek trafigi ve
PMU ile olcum konularini icerir.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RjUvxRGLdExFGnzGPpPagB
Sik kullanilan terimlerin Turkce cevirileri yerine yazilimcilarin yaygin
kullandigi Ingilizce karsiliklari kullanildi (sabit->const/constant,
yigin->stack, isaretci->pointer, satir ici->inline, dallanma->branch,
guc indirgeme->strength reduction, donguyu acma->loop unrolling vb.).
Yerlesik Turkce kelimeler (dongu, dizi, fonksiyon, bellek, komut,
derleyici) korundu.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RjUvxRGLdExFGnzGPpPagB
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants