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:
Kopyala-yapıştır yapmak istersen diye kodu aşağıya ekliyorum:
[CODE title="Makine kodu (hexadecimal mod)"]ba0b 01b4 09cd 21b4 4ccd 2148 656c 6c6f
2c20 576f 726c 6421 0d0a 24[/CODE]
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:
[CODE title="Makine kodu (binary mod)"]10111010 00001011 00000001 10110100 00001001 11001101
00100001 10110100 01001100 11001101 00100001 01001000
01100101 01101100 01101100 01101111 00101100 00100000
01010111 01101111 01110010 01101100 01100100 00100001
00001101 00001010 00100100[/CODE]
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.
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:
- DOSBox emulatörü
- Herhangi bir Hex editörü
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:
- Free Hex Editor (frhed)
- HxD
- XVI32
- Cygnus Hex Editor
- Free Hex Editor Neo
- UltraEdit (hex modu mevcut)
- Notepad++ (hex editör eklentisi mevcut)
- GNU Emacs (hex editör modu mevcut)
- VIM (hex editör modu mevcut)
Kopyala-yapıştır yapmak istersen diye kodu aşağıya ekliyorum:
[CODE title="Makine kodu (hexadecimal mod)"]ba0b 01b4 09cd 21b4 4ccd 2148 656c 6c6f
2c20 576f 726c 6421 0d0a 24[/CODE]
Eğer kendine daha fazla eziyet etmek istiyorsan
[CODE title="Makine kodu (binary mod)"]10111010 00001011 00000001 10110100 00001001 11001101
00100001 10110100 01001100 11001101 00100001 01001000
01100101 01101100 01101100 01101111 00101100 00100000
01010111 01101111 01110010 01101100 01100100 00100001
00001101 00001010 00100100[/CODE]
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:
[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