2017-12-06 107 views
5

GNU assembler, bazı talimatlar için yayılan opodun alternatif formlarını kontrol etmek için bazı araçlara sahip gibi görünüyor. Örneğin.GNU assembler yönergesinin x86 "mov.s" belgesinde ".s" gibi ekleri nerede bulunur?

0: 89 c8     mov eax,ecx 
2: 8b c1     mov eax,ecx 

Biz .s eki 8b sürümüne 89 işlem kodu geçmek için göründüğünü görebilirsiniz (ve uygun ModRM Byte'ını): as test.s -o test.o && objdump -d test.o -M intel ile yukarıdaki kodu İşleme

.intel_syntax noprefix 
mov eax, ecx 
mov.s eax, ecx 

aşağıdaki sökme verir.

GNU assembler tarafından desteklenen bu eklerle ilgili daha fazla bilgi edinmek istiyorum, ancak şu ana kadar ilgili belgeleri bulamadım. Bu ekleri nerede okuyabilirim?

+0

, bu teknik olarak konu dışı olduğunu. (Dokümanlar için bir özet + bağlantı oluşturacak şekilde iyi bir cevabı yapabilirsiniz).Her neyse, iyi bir soru, kurallara uysa da IMO açık kalmalıdır. –

+0

Karşılıklı nokta ... ifadeli olarak, soru konu dışı olarak kapatılmalı veya konu üzerinde yeniden yayınlanmalıdır. Konu dışı sorular açık bırakıldı daha fazla konu dışı soru için model olabilir. – Mogsdad

cevap

3

Binutils 2.29 itibariyle, komut ekleri, sözde öneklerin lehine deprecated artık. GNU Assembler'da (önceki 2.29) info pages belgelenen eski ekleri bulabilirsiniz. Daha önce info as sayfa bu demek:

9.15.4.1 Talimat adlandırma

Farklı kodlama seçenekleri opsiyonel anımsatıcı soneki yoluyla belirlenebilir

[kesik]. .s, bir kayıttan diğerine geçerken 2 kayıt işlenmesini kodlamada değiştirir. .d8 veya .d32 soneki, kodlamada 8 bit veya 32 bit deplasmanı tercih eder. Yeni sözde önekleri belgelenmesi

, Binutils 2.29 (ve üstü) info as sayfa okumak için revize edilmiştir:

Farklı kodlama seçenekleri sözde önekleri yoluyla belirtilebilir :

  • {disp8 } - 8 bitlik yer değiştirmeyi tercih edin.
  • {disp32} - 32 bitlik yer değiştirmeyi tercih edin.
  • {load} - yükleme formu talimatını tercih edin.
  • {store} - mağaza formu talimatını tercih edin.
  • {vex2} - VEX yönergesi için 2 bayt VEX önekini tercih edin.
  • {vex3} - VEX talimat için 3 bayt VEX öneki tercih ederim.
  • {Evex} - Evex önekiyle kodlamak. Eğer docs bir bağlantı soran yerine doğrudan nasıl çalıştıkları hakkında daha fazla ayrıntı için soruyorsun çünkü ifadeli gibi
+0

Demonte ederken bu geçersiz kılmaları kullanabilmek için 'objdump' veya diğer binutils araçlarını kullanabilmeniz harika olurdu. Ancak, bilgi sayfası dizininde alakalı hiçbir şey göremiyorum. Belki de, Agner Fog'un objconv'u gibi bir 3. parti sökücünün sahip olabileceği bir özellik, çünkü yeniden bir araya getirilebilecek bir asm yapmaktır. –