stanford-oval/wikipedia huggingface dataset:
Buyruk kümesi mimarisi
Komut yapıları > CPU içerisinde dahili depolama birimleri: yığınlar (stacks) ve yazmaçlar (registers)

Bir kez hafızadaki bayt düzeni belirlendiğinde donanım tasarımcısı CPU'nun veriyi nasıl depolayacağına dair bazı kararlar vermek zorundadır. Bu, en basit anlamda komut kümesi mimarisine karar vermektir. Üç seçenek vardır:
Bir yığın tabanlı mimari
Bir biriktirici tabanlı mimari
Bir genel amaçlı yazmaç (GPR - general purpose register) mimarisi
Yığın mimarisinin komutlarını işletmek için bir yığın kullanır ve işlenenler yığının en üstüne aşağıdan yukarı doğru dizilir. Yığın yapılı makineler iyi bir kod yoğunluğuna ve ifadelerin değerlendirilmesi için sade bir modele sahip olmalarına rağmen, istenilen bir yığına rastgele erişilemez, bu nedenle yığınlı yapılarda etkili kod oluşturulması zordur.
Bir işlenenin tamamı biriktiricinin içinde olan biriktirici mimarileri, makinenin karmaşıklığını en aza indirir ve çok kısa komutlara izin verir. Ancak biriktirici yalnız geçici depolama yaptığından hafıza trafiği (erişimi) oldukça yüksektir.
Genel amaçlı yazmaç kullanan mimariler, günümüzün makine mimarileri içerisinde en çok tercih edilen modelidir. Bu yazmaç kümeleri bellekten çok daha hızlıdır, derleyici tarafından kullanılması çok kolay, çok etkin ve çok verimlidir. Ayrıca son yıllarda donanım fiyatları önemli ölçüde düştü ve böylece en az maliyetle çok sayıda yazmaç eklenebilir oldu. Eğer bellek erişimi hızlı ise, yığın tabanlı tasarım iyi bir seçenek olabilir. Bellek erişimi yavaşsa, yazmaçları kullanmak çok daha iyidir. Bu sebeple son 15 yılda çıkan pek çok bilgisayar sistemleri genel yazmaç tabanlıdır. Uzun komutlarda tüm işlenenler yazmaçların sonuçları kullanılarak isimlendirilmelidir, bu sebeple daha uzun getirme, yakalama ve çözme zamanları ve döngüleri oluşur. (Kısa komutlar ISA tasarımcıları için çok önemli bir amaçtır.) Tasarımın ISA seçimi aşamasında tasarımcılar belirli bir ortamda en iyi hangi mimarinin çalışacağına karar vermeli ve vazgeçilecek (taviz verilecek) şeyleri dikkatle tetkik etmelidirler. (İyi tasarım fedakârlık gerektirir).
Genel amaçlı mimari, işlenenlerin bulundukları yerlere göre üçe ayrılabilir. Bellek-bellek mimarilerinde bellekte iki ya da üç işlenen birlikte bulunur. Böylece bir yazmaçta herhangi bir işlenene ihtiyaç duyulmadan komutun işlem yapmasına izin verilir. Yazmaç-bellek mimarileri en az bir işlenenin yazmaçta, bir işlenenin de bellekte olmasını gerektiren bir yapıya ihtiyaç duyar. Yükle depola mimarileri veri üzerinde herhangi bir işlem yapılmadan önce verinin yazmaçlara gönderilmesini sağlar. Intel ve Motorola yazmaç bellek mimarilerine örnektir; Digital Equipment'in VAX mimarisi bellek-bellek işlemlerine izin verir; MIPS, SPARC, PowerPC ve ALPHA yükle-depola makinelerine örneklerdir.
Günümüzde birçok mimari GPR tabanlıdır. Şimdi GPR mimarilerini ikiye bölen ana komut kümesi karakteristiklerini inceleyelim. Bunlar adresleme biçimleri ve işlenenlerin sayıları olarak iki grupta incelenirler.
Komut yapıları > İşlem Kodlarını Genişletme

İşlem kodlarını genişletme, işlem kodlarının geniş bir kümesini ve kısa işlem kodları, dolayısıyla kısa komutları elde etme amacıyla ortaya çıkmıştır. Amacı bâzı işlem kodlarını kısaltmak, ancak ihtiyaç olduğunda uzun işlem kodları da sağlamaktır. İşlem kodu kısa olduğunda, bitlerden birçoğu işlenenleri tutar (komut başına iki ya da üç işlenen bulunabilirdi). İşlenenler için alana ihtiyaç duyulmadığında (Halt gibi bir işlem sırasında ya da makine bir yığın kullandığında), tüm bitler işlem kodu için ayrılabilir, bu durum birçok benzersiz komuta izin verir. Az işleneni olan uzun işlem kodları olduğu gibi çok işleneni olan kısa işlem kodları da mevcuttur.
16-bit komutlara ve 16 yazmaca sahip olan bir makine düşünelim. Bu kez basit bir ya da iki biriktirici yerine bir yazmaç kümesi bulunur, benzersiz bir yazmaç tanımlamak için 4 bit kullanırız. Her biri 3 yazmaç işlenenine sahip olan ya da işlem kodu için 4 bit, bellek adresi için 12 bit kullanan (4K boyutunda bir bellek olduğunu varsayıyoruz) 16 komutu şifreleyebiliriz. Bellek kaynağı 12 bite gereksinim duyar, diğer amaçlar için 4 bit kalır. Fakat, eğer bellekteki bütün veri ilk olarak bu yazmaç kümesindeki bir yazmaca yüklenirse, komut yalnızca 4 bit kullanarak (16 yazmaç olduğunu varsayarsak) gerekli veri ögesini seçebilir. Bu iki seçim aşağıdaki şekilde gösteriliyor;
Şekil: 16-bit komut biçimi için iki olasılık
Aşağıdaki komutları şifrelemek istediğimizi varsayalım;
3 adresli 15 komut
2 adresli 14 komut
1 adresli 31 komut
0 adresli 16 komut
Bu komut kümesini 16 bitle şifreleyebilir miyiz? İşlem kodlarını genişletme işlemini kullandığımız sürece cevap “evet” olur. Şifreleme aşağıdaki gibi yapılır;

Genişleyen işlem kodu yapısı, çözme işlemini daha karmaşık hale getirir. Basit şekilde bir bit kalıbına bakıp hangi komut olduğuna karar vermek yerine, komutu aşağıda belirtildiği gibi çözmemiz gerekir:
if (leftmost four bits != 1111)
  (Execute appropriate three-address instruction)

else if (leftmost seven bits != 1111 111)
  (Execute appropriate two-address instruction)

else if (leftmost twelve bits != 1111 1111 1111)
  (Execute appropriate one-address instruction)

else 
  (Execute appropriate zero-address instruction)
Her adımda, daha fazla bite bakmamız gerektiğini bildiren yedek bir kod bulunur. Bu durum, donanım tasarımcılarının sürekli karşılaştıkları taviz vermelerin (trade-off) diğer bir örneğidir. Burada işlem kodu alanı işlenen alanıyla yer değiştirmiş olur.
Komut türleri

Birçok bilgisayar komutu veri üzerinde yürütülür, ancak yürütülmeyen komutlar da vardır. Bilgisayar üreticileri komutları aşağıdaki kategorilere ayırır:
Veri aktarımları
Aritmetik işlemler
Boolean
Bit işleme (shift ve rotate komutlarıyla)
Giriş/Çıkış
Denetim aktarımı
Özel amaç
Komut türleri > Veri aktarım komutları

Veri hareket komutları en sık kullanılan komut türlerinden birisidir. Veri bellekten yazmaçlara, yazmaçlardan yazmaçlara ve yazmaçlardan belleğe taşınabilir, birçok makine kaynak ve hedefe bağlı olarak farklı komutlar sağlar. Mesela bir MOVE komutu her zaman iki yazmaçlı işlenene ihtiyaç duyabilir, oysa MOVE komutu bir yazmaç ve bir bellek işlenine izin verir. RISC gibi bâzı mimariler, işletimi hızlandırmak için belleğe veya bellekten veri taşıyan komutları sınırlandırır. Birçok makine, farklı boyutlardaki veriyi işlemek için değişik load, store ve move komutlarına sahiptir. Mesela bayt işlemek için bir LOADB komutu, sözcük işlemek için de bir LOADW komutunun kullanılması gibi. Bellekten belleğe doğrudan veri aktarım komutu yoktur. Bu durumda CPUgibi aracı elemana ihtiyaç duyulur. Veri önce bellekten biriktiriciye alınır, daha sonra da diğer bellek alanlarına aktarılır.
Veri aktarım işlemleri kendi arasında üç alt gruba ayrılırlar: Aktarım bellekle yazmaç arasında, yazmaçtan yazmaca ve yığına veri atıp geri alma şeklinde yapılabilir.
Komut türleri > Bellek-yazmaç aktarımı

Komutların sonunda bulunan harfler belirli kaydedicileri hedefler. Mesela A kaydedicisini, X indis kaydedicisini ve Y indis kaydedicisini hedefleyebilir. Verinin alındığı bellek konumları, komutun işlenen kısmında belirtilir. Bu adresler, indisli, mutlak ve veri tanımlı olabilirken, bayraklardan Z ve N bayrakları etkilenirler.
Kaydedicilerden belleğe depolama veya saklama yapmak için STA, STX ve STY komutları kullanılır. Bu kaydedicilerdeki bilgi işlenen üzerinden hedeflenen bellek konumuna aktarılır. Bu aktarım işlemleri sırasında bayraklarda bir değişme olmaz. Veri aktarım işlemlerinde kaynağın içeriği değişmez, fakat hedefin içeriği değişir.
Mesela belleğin bir konumundaki veri alınarak başka bir konumuna atılma işlemi için basit bir program yapılırsa:
LDA $0200  ; (Load to A), A = [$0200]
STA $2025  ; (Store the A), [$2025] = A
Komut türleri > Yazmaçtan yazmaca aktarım

Bu komutlar bellekte bir baytlık yer kaplarlar. Komut yanında işlenene gerek duyulmaz. Kaydediciden kaydediciye veri aktarım komutları; TAX, TAY, TXA, TYA, TSX ve TXS'dir.
Burada komutun ortasındaki harf daima kaynak kaydedicisini, sondaki harf ise hedef kaydedicisini gösteririr. TXS'nin dışında diğer komutlar N ve Z bayraklarını etkiler.
TXS komutu program başlangıcında yığın işaretçisini (stack pointer, SP) hazırlamada kullanılır. SP yığındaki bir sonra kullanılabilecek bellek konumunu gösterir.
LDX #$FF ; Yığının dibini gösterecek veriyi hazırla
TXS 	 ; ve yığın işaretçisine aktar.
Komut türleri > Veri aktarımları

Veri, biriktiriciden yığına, yığından biriktiriciye ve durum (P) bilgileri yığına, yığından tekrar duruma aktarılır. Yığına atılan bir veri, yığın işaretçisinin değerini bir azaltır, yığından geri çekilen bir veriyle de yığın işaretçisi tekrar bir artar.
Yığın kullanımı iki sebeple gerçekleştirilir:
Kesmelere cevap vermek için ve altyordamlara dalmalarda dönüş adresini saklamak için
Kaydedici içeriklerinin geçici olarak depolanması için.
Mesela 6502 mimarisinde, PHA komutu, yığın işaretçisinin gösterdiği ilk yığın konumuna biriktiricinin içeriğini atarken, yığın işaretçisi bir sonraki boş konumu göstermek için değerini bir azaltır:
0200 LDA #$A5 ; A=A5H
0202 PHA      ; A'yı yığına at
0203 LDA #$67 ; A=67H
0205 PHA      ; A'yı yığına at
Komut türleri > Aritmetik işlem komutları

Aritmetik işlemler tam sayıları ve kayan nokta sayılarını kullanan komutlara sahiptir. Komut kümelerinde çeşitli veri boyutları olduğundan farklı aritmetik komutlar bulunur. Veri aktarım komutlarıyla, değişik adresleme biçimlerinde yazmaç ve bellek erişiminin çeşitli kombinasyonlarını sağlamaya yarayan farklı komutlar olabilir.
Komut türleri > Aritmetik işlem komutları > Toplama işlemi

Sekiz adresleme biçimini kullanabilen ADC ve ADD komutları, işlenenin değerini, elde ile birlikle biriktiricideki sayıyla toplayarak yine sonucu biriktiriciye atar. Bu işlemin sembolik gösterimi şu şekildedir:
[A] = [A] + [M] + C
Buradaki [M], ADC ve ADD komutlarının işlenen kısımlarında bulunan veriyi veya bellekle bulunan bir veriyi göstermektedir. Toplama işlemi, durum bayrağındaki D'nin durumuna göre ikili sayı kodunda ya da BCD kodunda olabilir. Veriler toplama ve çıkarma işlemlerinde işaretli veya işaretsiz şekilde birlikte kullanılabilir. Programcının ne tür bir veri kullandığını bilmesi gerekir.
ADD komutu işlenirken bir önceki işlemden kalan elde varsa bu bi sonraki eldeye katılarak toplama işlemine sokulur. Toplama işlemine bir örnek verilirse:
CLC      ; C=0
LDA #$25 ; [A]=25H
ADC $40  ; [A] = [A] + [0040] + C
Yukarıdaki programda ilk satırda CLC bir önceki programdan kalan ve şu anki programa etki edebilecek eldelerden kurtulmak için C bayrağını temizlenir. Daha sonra A'ya 25H verisi yüklenir. Bir altındaki adımda A'daki veri [0040] no' lu bellek konumundaki veri ve elde toplanarak sonuç yine A'ya yazılıyor.
Komut türleri > Aritmetik işlem komutları > Çıkarma işlemi

Tekrar hatırlatacak olursak değişik mimari türlerinde değişik komutlar kullanılmaktadır, bunlar karıştırılmamalıdır. SUB, SUBI, SUBU, SBC değişik mimarilerdeki çıkarma komutlara örnektir. Mesela 6502'de SBC çıkarma komutu ile, A'daki değerden bellek konumunun değeri ve eldeki değer çıkarılır. Sonuç yine biriktiricide kalır. Borç, elde bayrağının(C bayrağı) ters dönmüş hali olarak düşünülebilir. Bu işlemi sembolik olarak şu şekilde gösteririz
A = A - M - C
Çıkarma işlemi, toplama işlemindeki gibi hem ikili sayılarla hem de BCD modunda yapılabilir. Burada c = (1 - C) ifadesi çok baytlı çıkarma işlemlerinde kullanılır. C = 0 ise sonuca etki edilmez. Çünkü C = 1 ise, tersi 0 olur.
Komut türleri > Boolean mantık komutları

Boolean mantık komutları Boolean aritmetik işlemlerinde olduğu gibi aynen uygulanır. AND, NOT, OR ve XOR işlemlerini uygulamak için komutlar bulunur.
Bu komutlar, biriktiricideki değerle bellek konumundaki değeri bit bit mantık işlemine sokarlar ve daha sonra sonuç biriktiriciye yazılır. Bütün bu işlemler N (Negatif) ve Z (Sıfır) bayraklarını etkiler. Bu komutlardan en yaygın kullanılanları AND ve OR komutlarıdır.
AND komutu başka bitlere etki etmeden istenen bitin maskelenmesinde de kullanılır. Programcı bellek konumundaki temizlemek istadiği veriye göre A'ya değer atmalıdır.
OR komutları AND'in tersine istenen belirli bitleri 1 yapmada kullanılır.
Komut türleri > Bit işleme komutları

Bit işleme komutları, verilen bir veri sözcüğün içindeki bitleri veya bit gruplarını 1(set) veya 0(reset) yapmada kullanılır. Bunlar sola veya sağa aritmetik ve mantıksal kaydırma ve döndürme komutlarını içerir. Mantıksal kaydırma komutları, bitleri belirtilen miktarda sola ya da sağa kaydırırmada kullanılır (left shift and right shift).
Genellikle ikiyle çarpma ya da bölme işlemleri için kullanılan aritmetik kaydırma komutları en soldaki bit sayının işaretini gösterdiğinden bu biti kaydırma. Sağa doğru yapılan aritmetik kaydırmada, işaret biti yanındaki bite kopyalanır. Sola doğru yapılan aritmetik kaydırmada bitler sola kaydırılır, sağdan sıfırlar içeriye girerler, ancak işaret biti sabit kalır, hareket ettirilmez. Döndürme komutları kaydırılmış bitlere kaydırma yapan komutlardır. Mesela sola 1 bit döndürmede en soldaki bit dışarı kaydırılır ve en sağdaki bit haline getirmek için de döndürme yapılır.
Komut türleri > Giriş/çıkış komutları

Giriş/Çıkış komutları, mimariden mimariye pek çok değişiklik gösterir. G/Ç'ı kontrol etmek için bâzı temel düzenler kullanılır. Bunlar programlanmış G/Ç, kesinti sürümlü (interrupt-driven) G/Ç ve DMA aygıtlarıdır.
Komut türleri > Denetim aktarım komutları

Kontrol komutları dallanmalardan, atlamalardan ve yordam çağırmalarından oluşur. Dallanmalar koşullu ya da koşulsuz olabilir. Atlama komutları dallanma komutlarına benzer. Dallanma komutlarının adres içeren bir şeklidir. Atlama komutları farklı durumları belirtmek için genellikle bellek adres konumunun bitlerini kullanır, çünkü işlenene ihtiyaç duymaz. Yordam çağırmaları dönüş adresini otomatik olarak saklayan özel dallanma komutlarıdır. Geri dönüş adresini kaydetmek için farklı makineler farklı uygulamalar kullanır. Bazı makineler adresi bellekte belirli bir yere kaydeder, bazıları bir yazmaca kaydeder, bazıları da adresi yığına bir veri gibi kaydeder. Genellikle en çok kullanılan yöntem de yığına atmaktır (PUSH ve PULL komutlarıyla atılır ve alınır).
Komut türleri > Denetim aktarım komutları > Şartsız dallanma komutu

Şartsız herhangi bir adrese gitme işlemini JUMP komutu gerçekleştirir. Eğer bu komutunun devamındaki komut veya komutlar işlenmeyecekse bu komut kullanılır. JUMP komutu, mutlak adresleme veya dolaylı adresleme modlarından birisini kullanır.
Komut türleri > Denetim aktarım komutları > Şartlı dallanma komutu

Şartlı dallanmada gerekli şart sağlandığı anda program belirlenen hedefe sapar. Şartlı dallanma komutlarını, dalma komutundan ayırt edebilmek için sapma adını aldı. Eğer şart sağlanmazsa program bir sonraki komuttan işlemeye devam eder. Şartlı dallanma komutları aşağıdaki sıra ile çalışır:
CPU işlem kodunu alıp getirir ve durumun ne olduğunu kontrol eder.
CPU öne sürülen şarta bakar. Bu şartlar şunlardır:
sonuç negatif mi?
sonuç sıfıra eşit mi?
elde (C) bayrağı 1 mi?
Eğer koşulan şart sağlanırsa, program sayıcının içeriği o anki adresle yüklenir.
Eğer koşulan şartla sağlanmazsa, CPU sıradaki komutu işler.
JUMP komutu kontrolü bellekte belirli bir adrese aktarır, sapma komutları kontrolü, komut işlendikten sonra bir sonraki komutun bulunduğu yerden ilerideki veya gerideki belirli bir bellek konumuna aktarır. Dalma komutu ile sapma komutu arasındaki diğer bir fark ise, sapma komutları karar verme komutlarıdır. Sapma şartları mikroişlemci durum bayraklarından C (elde), N (negatif veya işaret), Z (sıfır) ve V (aritmetik taşma) bayraklarına göre gerçekleşir.
Komut türleri > Özel amaçlı yazmaçlar

Özel amaçlı komutlar arasında dizi işleme, yüksek seviye dil desteği, koruma, bayrak kontrolü ve önbellek yönetimi de vardır. Birçok mimari dizi işlemek için özel komutlara sahiptir. Bu özel komutlar için mimarilerde özel yazmaçlar bulunabilir.
Komutların geçtiği temel aşamalar

Komutlar işlenirken geçtiği belirli aşamalar vardır. Bunlar:
programın komutlarını alıp getirme (fetch)
çözme (decode)
işletme (execution)
sonucun saklanması
bir sonraki komutun yakalanması.
Bir programı işletmek için, işlemci birim zamanda bir komut getirir ve belirtilen işlemi uygular. Komutlar, bir dallanma veya bir atlama komutuna rastlayana kadar ardışık bellek konumlarından getirilir. İşlemci, program sayacını (Program Counter, PC) kullanarak, getirilecek bir sonraki komutu içeren bellek konumunun adresini saklar. Komut getirildikten sonra, program sayacının içeriği dizideki bir sonraki komutu gösterecek şekilde güncellenir. Bir dallanma komutu program sayacına farklı bir değer yükleyebilir.
İşlemcideki bir başka kilit yazmaç ise komut yazmacıdır (Instruction Register - IR). Her bir komutun 4 bayttan(1 sözcük) meydana geldiğini ve tek bellek sözcüğünde depolandığını varsayalım. Bir komutu işletebilmek için, işlemci aşağıda belirtilen adımları sırasıyla izler:
Program sayacı tarafından gösterilen bellek konumunun içeriği getirilir. Bu bellek konumunun içeriği işletilecek bir komut olarak yorumlanır. Bu nedenle bu içerik komut yazmacına yüklenir. Bu durum sembolik olarak aşağıdaki gibi ifade edilir:
IR ← PC
Belleğin bayt adreslenebilir olduğunu varsayarak, PC'nin içeriği 4 arttırılır.
PC ← [PC] + 4
Komut yazmacındaki komut tarafından belirtilen faaliyetler yerine getirilir.
Eğer bir komut bir sözcükten fazla yer kaplıyorsa 1. ve 2. adımlar tüm komut getirilene kadar tekrarlanmalıdır. Bu iki adım genellikle getirme evresi, 3. adım ise işletme evresi olarak adlandırılır.
Bazı istisnai durumlarda, bir komutun aşağıdaki işlemleri belirli bir düzende 1 ya da daha fazla sayıda uygulaması gerekir:
Bir işlemci yazmacından diğer bir yazmaca ya da AMB'ye 1 sözcük büyüklüğünde veri aktar.
Bir aritmetik veya mantık işlemi uygula ve işlemin sonucunu işlemci yazmacına yaz.
Verilen bir bellek konumunun içeriğini getir ve işlemci yazmacına yaz.
Bir işlemci yazmacındaki 1 sözcük büyüklüğündeki veriyi verilen bir bellek konumuna yaz.
İşlemcilerin organizasyonu, son yıllarda teknolojide yaşanan gelişmeler ve diğer taraftan başarıma olan ihtiyaçtan dolayı oldukça gelişti. Yüksek başarımlı işlemcilerin geliştirilmesindeki yaygın bir yönteme göre çeşitli fonksiyonları yerine getiren birimler mümkün olduğunca paralel bir şekilde çalışmalıdır (Boru hattında olduğu gibi). Yüksek başarımlı işlemciler ardışık (pipelined) bir organizasyona ve yapıya sahiptir. Bir komutun işletilmesine önceki komutun işletilmesi bitmeden önce başlanır ve bir süre sonra her bir saat vuruşunda mükemmel bellek varsa bir komut içeriye alınır ve bir komutun işletilmesi sonuçlandırılır. Süper skalar işletim adı verilen bir başka yaklaşımda aynı anda birçok sayıda komut getirilip işletilir.
ISA örnekleri > Intel

Intel sağdan anlamlılığı ve iki adresli mimariyi değişik uzunluktaki komutlarla kullanan bir mimaridir. Intel işlemcileri, bütün komutların bir bellek mahalinde işlem görebilme anlamına gelen yazmaç-bellek mimarisini kullanır, fakat diğer işlenen bir yazmaç olmalı. Bu ISA mimarisi değişik uzunluktaki komutların veri üzerinde işlem görmesine izin verir, örneğin 1, 2 veya 4 bayt uzunluğundaki komutlar.
ISA örnekleri > MIPS

MIPS sağdan anlamlılığı kullanan, bayt adreslenebilir, üç adresli, sabit komut ve hafıza uzunluklu bir mimaridir. Sadece load ve store komutlarının belleğe ulaşabildiği yükle ve sakla mimarisidir. Diğer bütün komutlar işlenenler için yazmaç kullanmak zorundadırlar. Bu çok geniş bir yazmaç kullanımını gerektirir. MIPS aynı zamanda sabit uzunluklu işlemler kullanır.
ISA örnekleri > Java Virtual Machine

Java platformdan bağımsız olması açısından son derece ilginç ve son zamanlarda popülerliği artan bir dildir. Kod bir mimari üzerinde bir kod derlenmişse ve program farklı bir mimaride çalıştırılmak isteniyorsa bu, kod değiştirilmeden veya yeniden derlemeden yapılabilir.
Java derleyicisi program ilk çalıştırıldığında yazmaç sayısı, bellek boyutu, I/O girişleri gibi mimari bağlanımları açısından bir kısıtlama getirmez. Fakat daha sonra programı çalıştırmak için bir Java Virtual Machine (JVM)'e ihtiyaç duyulur. JVM asıl olarak donanım mimarisine giden bir katlayıcı fonksiyonu görür ve platforma bağımlıdır. Fakat JVM belli bir mimari üzerinde görüldüğü zaman herhangi bir ISA'de derlenmiş bir programı çalıştırabilir. Çalıştırma anında JVM'in görevi baytkodları yükleme, kontrol etme, bulma ve yürütmedir. JVM sanal olmasına rağmen iyi tasarlanmış bir komut kümesi mimarisidir.
Komut kümesi mimarileri değişik tasarım ilkelerini kullanır. Komut kümesi mimarisinde başlıca hedefler; daha güçlü işlemler sunmak, komut sayısını ve karmaşıklığını azaltmak, hızı artırmaktır. Buna karşılık daha yavaş saat sıklığı ve yüksek komut başına çevrim (cycles per instruction) ise karşılaşılabilecek risklerdir. Komut kümesi mimarisi için iyi bir soyutlama gerekir.
Balıkesirspor 2017-18 sezonu

Balıkesirspor 2017-18 sezonu, kırmızı beyazlı ekibin 2015'te Süper Lig'den 1. Lig'e düştüğü üst üste üçüncü, toplamda yirmi yedinci sezonu, kuruluşunun ise elli ikinci yılıdır. 2016-17 1. Lig sezonunu dokuzuncu tamamladı. Balıkesirspor  bu sezonda Süper Lig mücadele etmektedir. Türkiye Kupası'nda ise 3. tur maçında kendi evinde Bölgesel Amatör Lig takımı Kars 36 Spor'a pemaltılar sonucunda 7-6 mağlup olarak katıldığı turda kupaya veda etmiştir.
21 Eylül 2017'de alınan 3 puan silme cezasının ardından, ligde 16 galibiyet, 7 beraberlik ve 11 mağlubiyet alan Balıkesirspor 52 puan ile 8. sırada yer aldı.
Formalar

Balıkesirspor, 2017-18 sezonunda Nike'ın ürettiği formaları giymiştir.
| 0 | 1 | 2 | 3 | 4 | 5 |
| --- | --- | --- | --- | --- | --- |
|               1. İç saha   forması  |               2. İç saha   forması  |               1. Dış saha   forması  |               2. Dış saha   forması  |               Yedek   forma  |  |
1. Lig

Ana madde: 2017-18 1. Lig
1. Lig > Puan durumu

| Sıra | Takım | O | G | B | M | AG | YG | GF | P | Eleme veya küme düşme |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| 6 | Gazişehir Gaziantep | 34 | 15 | 8 | 11 | 57 | 38 | +19 | 53 | Play-off |
| 7 | Altınordu | 34 | 15 | 8 | 11 | 55 | 45 | +10 | 53 |  |
| 8 | Balıkesirspor | 34 | 16 | 7 | 11 | 56 | 46 | +10 | 52 |  |
| 9 | İstanbulspor | 34 | 14 | 8 | 12 | 45 | 39 | +6 | 50 |  |
| 10 | Elazığspor | 34 | 13 | 9 | 12 | 53 | 44 | +9 | 48 |  |
Kaynak: TFF
Sıralama kuralları: Puan Kendi aralarındaki maçlar (sezon sonunda) Gol farkı Atılan gol sayısı
Notlar:
1 2  Kendi aralarındaki maçlarda: BB Erzurumspor 8 puan, Gazişehir Gaziantep 7 puan, Altınordu 1 puan
↑  TFF Kulüp Lisans Kurulu tarafından 3 puanı silindi.
1. Lig > Ayrıntılı lig durumu

| Toplam> O | Toplam> G | Toplam> B | Toplam> M | Toplam> AG | Toplam> YG | Toplam> GF | Toplam> P | İç saha> G | İç saha> B | İç saha> M | İç saha> AG | İç saha> YG | İç saha> GF | Dış saha> G | Dış saha> B | Dış saha> M | Dış saha> AG | Dış saha> YG | Dış saha> GF |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| 34 | 16 | 7 | 11 | 56 | 46 |  +10 | 52 | 8 | 5 | 4 | 27 | 18 |  +9 | 8 | 2 | 7 | 29 | 28 |  +1 |
Güncelleme: 22 Ekim 2018
Kaynak: TFF