İlk önce, her zaman iş için doğru aleti kullanın. İkili dosyaları görüntülemek için kullanılan metin editörü, çivilemek için bir bıçak kullanmakla aynıdır. Bu tür görevler için herhangi bir HEX görüntüleyici / düzenleyici kullanın veya söz konusu ikili dosyanın içindekileri bilen aracı kullanın. Eğer CPU'nun kodları hakkında konuşursak IDA Pro ücretsiz veya OllyDbg Yürütülebilir dosyaların içindekileri analiz etmek için yararlı olacaktır.
Bu opcode anlamına mı geliyor f8
ikili verilere dönüştürülür 1111 1000
ve dosyada saklanır?
@Mokubai tarafından doğru bir şekilde belirtildiği gibi - 0xF8
aynı sayıdır 1111 1000
bir tanesi HEX notasyonunda, sonuncusu ikili gösterim olarak gösterilmiştir. Ondalık sistemde 248 ile aynıdır.
CPU opcode'larından (veya derleyici assembler kaynak kodunu) elle çalıştırılabilir kod oluşturuyorsanız, i386 CPU tanıyacaktır 0xF8
(veya 0b11111000
veya 248 - hepsi aynı) CLC
talimat.
Derleyici tarafından oluşturulan bir derleme kodu clc
bir opcode var f8
ve
Assembler'in yukarıdaki anımsatıcıyı topladığından eminim
op kodunu değiştirir f8
burada.
Bu doğru, ancak - "Derleyici tarafından oluşturulan bir derleme kodu".
"Montaj kodu" ile kod kodları arasındaki farkı doğru anladığınızdan emin olmak istiyorum. Opcodes, CPU'nun anlayabileceği tam bir dildir, sadece sayılardır (CPU mnemonics aka assembler çevirmenleri bir rüya iken ilk bilgisayarları nasıl programladığımızdır)
Günümüzde, çoğunlukla "doğrudan" derlemeyi yüksek seviye programlama dilden doğrudan CPU işlem kodları üreten C / C ++ / GoLang gibi derleyicilerle çalıştırılabilir ikili dosyalara kullanıyoruz.
(Aslında “doğru derleme” dediğimde doğru değil, başlık derleyicileri altında çalıştırılabilir ikili dosyalar üretmeden önce birden fazla adım atıyorlardı, ancak son kullanıcı için benzinin nasıl harekete dönüştüğünü bilmeye gerek kalmadan bir araba kullanıyormuşuz gibi görünüyor)
Yorumda @ sawdust tarafından doğru bir şekilde belirtildiği gibi, üst seviye programlama dilleri CPU opcodları oluşturmak için farklı stratejiler kullanabilir. Örneğin analiz edebilirsiniz gcc
derleyici, kodları yapmak için kullanılacak birleştirme kodu üretmesini söyleyerek, kodları nasıl pişireceğini derleyici (nesne kodları)
gcc -S -o myprogram.asm myprogram.c
Bu durumda, neden ikili içeriğini göremiyorum
normal bir metin editörü kullanarak bir ikili dosya (Not Defteri) diyor - sonuçta
'0 ve' 1 doğru mu?
Not Defteri başka bir dil konuş. ASCII, Notepad için "Yunan" olan başka bir şey kendi "opcodes" ini anlıyor.