1 ve 0 makine dili bilgisayarın hangi programına yazılır?

Omer5051

Hectopat
Katılım
17 Eylül 2020
Mesajlar
548
Çözümler
9
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ı?
 

Dosya Ekleri

  • 1.PNG
    1.PNG
    9,7 KB · Görüntüleme: 104
  • 2.PNG
    2.PNG
    2,3 KB · Görüntüleme: 87
Son olarak Python'da yazdığım kodu 1 ve 0'lara dönüştüren bir program vb. bir şey var mı?
Python kodunu .exe yapan bir şeyler var. Pip install ile yükleniyor olması lazım hatta. Benim bildiğim kadarıyla .exe'lerin içi sıfır ve birlerden oluşuyor.

Ama bir sorun var. Mimariye göre bile değişir bu olay. Kaldı ki o sıfır ve birler farkındaysan her bir komut için 32/64 tane olmalı normalde. Fakat sende az. Çünkü kodun kendisi de döngü şeklinde. Assembly devreye giriyor burada.

Yani ne yapıyoruz, gidip Assembly öğrenip Assembly olarak yazıyoruz kodumunuzu. Sonra da onları elimizle veya şu tip yerler ile sıfır ve birlere çeviriyoruz. Sonra da onu .exe diye kaydediyoruz derdim ama .exe'lerin başında gerekli zımbırtılar vardır. O da olmaz muhtemelen.

Şu abimiz x86 Assembly ile yapmış gibi duruyor ama galiba sadece C kodunu sıfır ve birlere çevirmiş.

Bu arada Python dosyanın boyutu küçük çünkü onda sadece döngüler falan var. Bildiğin Python kodu var. Onu .exe yaptığında boyutu artacaktır. Örneğin şu dosya .exe uzantılı iken bir girdi istiyor ve bilgisayarı o kadar süre sonra kapatıyor. Ama .exe halinde iken bakarsan daha dosyanın başında bu program DOS modunda çalışmaz diyor. Biraz ilerlersen içinde exception'lar bile var gibi duruyor. "Unknown exception bad array new length string too long shutdown -s -t Kac dakika sonra kapatilsin?". Strigleri beraber tutmuş orada. Biraz daha ilerleyince stream'leri görüyoruz, bir şey anlaşılmıyor ama oradalar.
 
Son düzenleme:
Makine kodunu görebilmen için genel itibariyle Assembly dilinde yazman lazım. Aşağıda linkini bıraktığım programlar ile Assembly kodunu analiz edip makine kodlarını görebilirsin.
ida-pro – Hex Rays OllyDbg v1.10

Assembly ile yazmak istemiyorsan How do you get assembler output from C/C++ source in gcc? bu linkte anlatılan metodu kullanarak C kodunun Assembly halini görebilirsin. Aslında Python C ile yazıldığı için teorik olarak C kodunu bulabilmen gerekir ancak onun için bir yöntem bilmiyorum. Araştır, belki vardır.
 
Ancak amacını anlayamadım? Yani donanım ya da CHIP seviyesinde programlama mı yapmak istiyorsun?
Hayır, sadece aynı veriyi 1 ve 0 ile yazınca çalışacak mı merak ediyorum. (Zaten makinenin anlaması için eninde sonunda 1 ve 0' lara dönüşmesi lazım ben bunu kendi elimle yazarsam çalışacak mı onu merak ediyorum.)
Yani ne yapıyoruz, gidip Assembly öğrenip Assembly olarak yazıyoruz kodumunuzu. Sonra da onları elimizle veya şu tip yerler ile sıfır ve birlere çeviriyoruz. Sonra da onu .exe diye kaydediyoruz derdim ama .exe'lerin başında gerekli zımbırtılar vardır. O da olmaz muhtemelen.
Assembly için bir şey yüklememize gerek yok değil mi? Normal not defterine yazabilirim diye biliyorum. @Vavien.
 
Hayır, sadece aynı veriyi 1 ve 0 ile yazınca çalışacak mı merak ediyorum. (Zaten makinenin anlaması için eninde sonunda 1 ve 0' lara dönüşmesi lazım ben bunu kendi elimle yazarsam çalışacak mı onu merak ediyorum.)
Bunu görmek istiyorsan başta olarak Assembly dilini inceleyebilirsin. Eğer bu 1-0 yapısının nasıl çalıştığını anlamak istiyorsan daha başka konuları da öğrenmek gerekiyor.
 
O kod eskiydi. Aynısı ya da benzerini tekrar yazdım. .exe çok büyük çünkü tüm kütüphaneyi ekledi. Onu çıkarma zımbırtısı ile şu an uğraşacak vaktim yok.
.cpp
.s
.o

Dosyalar G++ 9.2.0 ile oluşturuldu. Farklı mimariler ve derleyiciler farklı dosyalar üretecektir.

Hayır, sadece aynı veriyi 1 ve 0 ile yazınca çalışacak mı merak ediyorum. (Zaten makinenin anlaması için eninde sonunda 1 ve 0' lara dönüşmesi lazım ben bunu kendi elimle yazarsam çalışacak mı onu merak ediyorum.)
Senin yazacağın sıfır ve birler birer karakter olacak. Bit olarak yazamıyorsun. Sıfır ve bir ile hesaplayıp yazabilirsin. Sana bu yüzden örnek bırakıyorum diyeceğim ama arada .dll ve kütüphaneleri de çekiyordur bu yüzden çalışmayacaktır muhtemelen.

Teoride evet, pratikte hayır diyorum bu yüzden.
Assembly için bir şey yüklememize gerek yok değil mi? Normal not defterine yazabilirim diye biliyorum. @Vavien.
Assemly ya da başka bir şey yazmak için not defteri yeterli. Ama çalıştırmak için değil.

Yapmaya çalıştığın şeyin bir anlamı yok. Sana bir şey katmaz. Bilgisayar/elektrik elektronik mühendisi olacaksan bile sadece bir bakış açısı kazandırmaktan öteye çok zor gider. Gerçekten merak ediyorsan burada anlatılacak şeyler değil bunlar. Oturup mimari dersi alman lazım. Orada da 10-20 satırlık C kodunu Assembly yapma veya 3-5 satırlık Assembly kodunu binary yapmayı yaparsın o kadar.
 
Son düzenleme:
Python ile tam sayıları ikili (0,1) rakama çevirebilirsin ve çıktıları o şekilde ekrana yazdırabilirsin. "Converting integers in Python" olarak ararsan, sana fikir verecek bilgilere ulaşabilirsin.
 
Python ile tam sayıları ikili (0,1) rakama çevirebilirsin ve çıktıları o şekilde ekrana yazdırabilirsin. "Converting integers in Python" olarak ararsan, sana fikir verecek bilgilere ulaşabilirsin.
Bunu diyorsunuz yani. Haklısınız, biz 2 saattir boşuna konuşuyoruz.

Kod:
print("{0:b}".format(int(input("sayi gir: "))))

Keşke insanlar başlıklardan daha fazlasını okuma kapasitesine sahip olsa.
 

Yeni konular

Geri
Yukarı