SORU
1 Kasım 2009, Pazar


'In LEA eğitimin amacı ne?

Benim için, sadece bir korkak MOV gibi görünüyor. Amacı nedir ve ne zaman kullanmalıyım?

CEVAP
3 Kasım 2009, Salı


Diğerleri belirttiği gibi, LEA (load etkili adresi) genellikle "bazı hesaplamaları yapmak için, ama asıl amacı o değil." hilesi olarak kullanılır 86 komut seti Pascal ve C gibi yüksek seviyeli dilleri desteklemek için tasarlanmıştır, diziler-özellikle değer vermez ya da küçük yapılar dizileri-yaygındır. Örneğin, koordinatları: bir yapı temsil eden (x, y) düşünün

struct Point
{
     int xcoord;
     int ycoord;
};

Şimdi hayal gibi bir ifade:

int y = points[i].ycoord;

points[] Point dizisidir. Farz tabanının dizi zaten EBX C i EAX xcoord ycoord her biri 32 bit (ycoord uzaklığı 4 bayt yapı), bu ifade edilebilir derlenmiş için:

MOV EDX, [EBX   8*EAX   4]    ; right side is "effective address"

EDX 16 *ineceğim. 8 ölçek faktörü Point Her 8 bayt boyutu olmasıdır. Şimdi aynı ifade ile kullanılan düşünün "Adres" operatör &:

int *p = &points[i].ycoord;

Bu durumda ycoord ama adresini değeri istemezsin. LEA (yük etkili adresi) devreye giriyor. Yerine ** 22, derleyici oluşturabilir

LEA ESI, [EBX   8*EAX   4]

ESI Adres yük olacak.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • 8lacKy

    8lacKy

    30 Mart 2009
  • eisleyhead

    eisleyhead

    11 Ocak 2006
  • International Secret Agents Concerts

    Internationa

    2 Aralık 2008