2015-03-28 28 views
5

adresindeki göreli atlama değeri 124'ten küçük olduğunda kısa atlamaların kullanılacağını okudum ve aksi halde uzun atlamalar kullanılmalıdır.Uzun ve kısa atlama (x86) arasındaki fark (x86)

CPU/performans'da x86'daki iki atlama türü arasında gerçekleştirilen işlemleri açısından ne fark vardır?

+0

Hangi talimat setinden bahsediyorsunuz? –

+1

x86 talimat seti – nadavge

+0

Ve bu * son derece iyi belgelenmiş CPU için bireysel talimatlar ile ilgili herhangi bir belge bulamıyor musunuz? – usr2564301

cevap

6

Üç tür JMP yönergesi vardır; kısa, yakın ve uzak (uzun). İlgili bir JMPJMP, ilgili bir JMP örneğidir. İki bayt olarak kodlanır; mevcut IP'ye göre gerçek JMP ve bayt +/- sayısı.

Yakın atlama, geçerli "segment" (gerçek mod terimlerini kullanarak) veya CS seçicisinde seçili bellek alanı içinde atlamanıza izin verir.

Uzun veya Uzak JMP ilaveten Kendiniz için zamanlamaları bakabilirsiniz (gerçek modda veya segment) bir seçici

içerir. Zamanla ilgili en büyük fark, JMP'u başarmak için okunması gereken farklı bayt sayısından kaynaklanır.

+0

Bu seçici nedir ve bu seçici nasıl çalışır? Uzun atlamada anladığım kadarıyla sadece bir adres gönderiyorum – nadavge

+0

Adres bir seçiciden ve bir ofsetden oluşuyor. CS: 1234'te olduğu gibi. CS, korumalı modda GDT veya LDT dışında bir seçici tanımlamak için kullanılır. Gerçek bir bellek adresini tanımlamaktan ziyade tablonun bir girişini seçmekten dolayı, özellikle gerçek mod bölümlenmiş bellek ile karşılaştırıldığında, tipik olarak oldukça küçük bir şey olurdu. Hafıza adresi GDT/LDT'de tanımlanmıştır. –

+0

Eklemeliyim, gerçek modda veya korumalı modda olsanız da etkin olarak aynı görünüyor… bu, kaputun altında farklı gerçek değerler ve GDT'yi kurmak için yapılan işin önündedir (gerekli değildir) bölümlenmiş belleği kullandığınızdan gerçek modda) –