Sorunuzu tam anlamıyla ele alacağım ve genel olarak bilgisayarları değil çoğunlukla mikroişlemcileri tartışacağım.
Tüm bilgisayarlarda bir tür makine kodu vardır. Bir talimat, bir opcode ve bir veya daha fazla operanddan oluşur. Örneğin, Intel 4004 (ilk mikroişlemci) için ADD talimatı 1000RRRR olarak kodlandı; burada 1000, ADD için opcode ve RRRR bir kayıt numarasını temsil ediyordu.
İlk bilgisayar programları elle yazılmış ve makine dilinde bir program oluşturmak için 1'leri ve 0'ları elle kodlamıştır. Bu daha sonra çip içine programlanır. İlk mikroişlemciler ROM (Salt Okunur Bellek); bu daha sonra EPROM (UV ışığı ile silinen Silinebilir Programlanabilir ROM) ile değiştirildi; şimdi programlar genellikle EEPROM ( "Elektriksel ... - EPROM" , yonga üzerinde silinebilir) veya özellikle Flash belleğe programlanır.
Çoğu mikroişlemci artık programları RAM'den çalıştırabilir (bu, mikrodenetleyiciler hariç her şey için oldukça standart), ancak programı ilk başta RAM'e yüklemenin bir yolu olmalı. Joby Taffey'in cevabında belirttiği gibi, bu bir Intel 8080 (4004 ve 8008'i izleyen) tarafından desteklenen Altair 8080 için geçiş anahtarları ile yapıldı. Bilgisayarınızda, bilgisayarı başlatmak ve işletim sistemini RAM'e yüklemek için kullanılan BIOS adı verilen bir miktar ROM vardır .
Makine dili çok yorucu oluyor; bu nedenle, anımsatıcı bir montajcı dili alan ve genellikle komut başına bir montaj kodu satırı olan makine koduna çeviren montaj programları geliştirildi. Yani 10000001 yerine, bir kişi ADD R1 yazacaktır.
Ancak ilk montajcının makine kodunda yazılması gerekiyordu. Daha sonra kendi montajcı kodunda yeniden yazılabilir ve makine dili sürümü ilk defa bir araya getirilirken kullanılır. Bundan sonra, program kendini toplayabilir. Buna önyükleme adı verilir ve derleyicilerle de yapılır; bunlar genellikle ilk olarak birleştirici (veya başka bir üst düzey dil) ile yazılır ve daha sonra kendi dilinde yeniden yazılır ve derleyici kendisini derleyene kadar orijinal derleyici ile derlenir.
İlk mikroişlemci, ana bilgisayarların ve mini bilgisayarların etrafından çok uzun bir süre sonra geliştirildiğinden ve 4004 zaten bir montajcı çalıştırmaya gerçekten uygun olmadığından, Intel muhtemelen büyük bilgisayarlarından birinde çalışan bir montajcı yazdı ve montaj kodunu tercüme etti. 4004, ROM'lara programlanabilecek ikili bir görüntü haline gelir. Bir kez daha, bu derleyicileri yeni bir platforma ( çapraz derleme adı verilen ) taşımak için kullanılan yaygın bir tekniktir .