Eğer yanlış anlamadıysam yapmak istediğin şey pek de mantıklı değil. Evet, yazdığın Python kodu toplamda 1.008 bit yapabilir fakat Python yorumlayıcısının bu kodu arka planda çalıştırmak için yaptığı çok ve çok daha fazla işlem var.
Yani hiçbir bilgisayar programcısı ya da mühendis bu şekilde yazılım geliştirmiyor. Kullandığımız işletim sistemleri, derleyiciler ve yorumlarıcılar işin zor olan kısmını bizim için hallederler.
Çok basit bile olsa sadece 0 ve 1 yazarak yürütülebilir bir program mı yapmayı istiyorsun? Bunu yapmak çok daha kolay. Sadece iki şeye ihtiyacın var:
Programımız 16-bit´lik bir x86 DOS uygulaması olacak çünkü olabildiğince küçük olmasını istiyoruz ve bu nedenle çalıştırabilmemiz için DOSBox emulatörü lazım.
Makine kodunu Notepad gibi bir metin editörüyle yazamayız. Metin dosyaları bizim bildiğimiz şekilde, yani text modunda açılırlar, okunurlar ve yazılırlar. Yürütülebilir ikili dosyaların ise binary modda açılması gerekir. Bunun için de Hex editörleri lazım.
Ben GNU/Linux ortamında Bless Hex editörünü kullanıyorum. Eğer Windows kullanıyorsan aşağıdaki Hex editörlerinden istediğin bir tanesini kullanabilirsin:
Hangi Hex editörü kullandığın fark etmez. İşine yarayan bir tanesini seçebilirsin. Gerekli kurulumları yaptıktan sonra tercih ettiğin Hex editörünü açıp aşağıdaki ifadeleri aynen yaz:
Kopyala-yapıştır yapmak istersen diye kodu aşağıya ekliyorum:
Eğer kendine daha fazla eziyet etmek istiyorsan kullandığın Hex editöründe eğer varsayılansa hexadecimal modu binary moda alıp sadece 0 ve 1 kullanarak da aynı programı yazabilirsin. Aynı programın binary (ikili) görünümü de bu şekilde:
Makine kodu olduğu için kodu başka herhangi bir işlemden geçirmemize gerek yok. Bundan sonra yapmamız gereken tek şey dosyayı HELLO.EXE adıyla kaydedip DOSBox emülatörü ile açmak:
Tebrikler! Makine koduyla ilk programınızı yazdınız ve çalıştırdınız.
Program aslında x86 Assembly ile yazıldı ve NASM ile assembling edildi:
[CODE title="Assembly kodu"]org 100h
mov dx,msg
mov ah,9
int 21h
mov ah,4Ch
int 21h
msg db 'Hello, World!',0Dh,0Ah,'$'[/CODE]
Assembling etmek için: nasm -f bin HELLO.ASM -o HELLO.EXE
Hepinize teşekkür ederim sorumun cevabını aldım. @detista hocam hex editör olarak HxD indirdim. Hexadecimal'dan binary' e bir türlü geçiş yapamadım sağdaki binary bölümü sadece tek tek kabul edip hexadecimal bölümüne yazıyor. Dosyayı direk binary olarak nereden açabilirim?
Benim Python'da 126 Byte'lık (1008 Bit) büyüklüğünde bir dosyam var. Bu dosyayı çalıştırdığımda 1'den 10'a kadar tüm sayıları sırayla çarpıp ekrana yazıyor. Şimdi bu kodlar toplamda 1008 Bit yani 1008 tane 0 ve 1'den oluşuyor. Benim aynı bu şekilde 1008 tane 1 ve 0 yazıp aynı işlevi gören bir kodlar dizisi yazmam mümkün mü?
Yazarsam bilgisayarın hangi programına yazacağım? (mesela metin belgesi açıp 100101010101 falan mı yazacağım?)
Not: Bunu örnek amaçlı verdim daha küçük bir kod dizisi yazarım, onu 1 ve 0'larla yazmaya çalışırım merak ettiğim için denemek istiyorum bir de o kodları çalıştırmak için Python kullanmam gerektiğini biliyorum daha sonra onda çalıştıracağım ben sadece bu veriyi oluşturmak istiyorum. Son olarak Python'da yazdığım kodu 1 ve 0'lara dönüştüren bir program vb. bir şey var mı?
Artık, kullandığımız bilgisayarlar saklı yazılım bilgisayarı (Stored-program computer) olduğundan direkt olarak elektriksel sinyal şeklinde programlama yapamazsın her bir işlemci komutu hex düzende ascii olarak şifrelenir ve işlemci içinde çözülür, ayrıca python yorumlanan bir programlama dilidir ve kendi sanal makinesi vardır yani python'da yazdığın şeyler ilk önce baytkod'a oradan da python sanal makinesi yardımıyla işlemci komutuna dönüştürülür ve veri beslemesi yapamazsın.