Gönderen Konu: ILAsm Opcode List  (Okunma sayısı 5915 defa)

ILAsm Opcode List

« : 25.10.2010 17:11:22 »
Hızlı düğmeleri aç

skate

İleti: 5.245

A Sinner Scener
Çevrimdışı
  • Administrator
  • *****
  • Hero Member
    • Profili Görüntüle
    • http://www.akaydin.com/
Arkadaşlar, şöyle detaylı bir ILAsm Opcode (Directive v.s. ne diyorlarsa artık .NET Platformunda) listesi içeren bir döküman bilen var mı? Mesela "nop" gibi komutlar cycle yiyor mu yoksa native'e çevrilmeden direk elimine mi ediliyor? Saçma bir şekilde .NET'in precompiler'ı sık sık "nop" gibi şeyler kullanıyor, sanki bir nevi blok ayıracı işlevi görüyor sanki o "nop"lar. Mesela onları kaldırmak performansı değiştirir mi? Bilen, gören, duyan, en güzeli tablo şeklinde tüm opcodeların listesi olan?

ILAsm Opcode List

« Yanıtla #1 : 26.10.2010 07:02:51 »
Hızlı düğmeleri aç

ssg

İleti: 331

Çevrimdışı
  • ****
  • Sr. Member
    • Profili Görüntüle
O noplar sanirim JIT kodu okurken referanslara hizli erissin diye alignment padding gorevi goruyor. Native (optimized) kodda nop'a sadece ayni sebepten, jump offset alignment icin rastladim. MSIL seviyesinde optimizasyona ben sahsen kalkismazdim zira JIT onlari BAYA iyi optimize ediyor. (bkz: http://www.eksisozluk.com/show.asp?id=9869307 ) (farkedeceginiz uzere ornekteki xchg ax,ax 'ler "fast nop" amacli kullaniliyor)

Official Microsoft opcode listesi surdan (ve haliyle Intellisense'ten) bulunabilir:

http://msdn.microsoft.com/en-us/library/system.reflection.emit.opcodes.aspx
« Son Düzenleme: 26.10.2010 07:05:32 Gönderen: ssg »

ILAsm Opcode List

« Yanıtla #2 : 26.10.2010 11:58:25 »
Hızlı düğmeleri aç

endo

İleti: 687

Çevrimdışı
  • Administrator
  • *****
  • Hero Member
    • Profili Görüntüle
    • http://www.moldibi.com
Selam, ssg'nin dediklerine ek olarak, 68000 assembly'de de nop'lar cycle gecirmenin yani sira cesitli peripherallerdeki interruptlara vakit tanimak ve/veya pipelining icin de kullaniliyordu.

Alıntı
Pipeline Synchronization with the Nop Instruction
Although the no operation (NOP) instruction performs no visible operation, it serves an
important purpose. It forces synchronization of the integer unit pipeline by waiting for all
pending bus cycles to complete. All previous integer instructions and ?oating-point external
operand accesses complete execution before the NOP begins. The NOP instruction does
not synchronize the FPU pipeline—?oating- point instructions with ?oating-point register
operand destinations can be executing when the NOP begins. NOP is considered a change
of ?ow instruction and traps for trace on change of ?ow. -68000 manual-


Belki burada da threading'le ilgili biseylere vakit tanimak icin olabilir diye dusundum.
- endo of glance -

ILAsm Opcode List

« Yanıtla #3 : 27.10.2010 01:10:34 »
Hızlı düğmeleri aç

ssg

İleti: 331

Çevrimdışı
  • ****
  • Sr. Member
    • Profili Görüntüle
Native'de belki ama CIL nop'un oyle bir etkisi oldugunu sanmiyorum. Soyle diyor Microsoft CIL NOP'u icin:

Alıntı
Fills space if opcodes are patched. No meaningful operation is performed although a processing cycle can be consumed.

ILAsm Opcode List

« Yanıtla #4 : 27.10.2010 13:59:08 »
Hızlı düğmeleri aç

skate

İleti: 5.245

A Sinner Scener
Çevrimdışı
  • Administrator
  • *****
  • Hero Member
    • Profili Görüntüle
    • http://www.akaydin.com/
biraz optimizasyon yapıcam da kritik noktalarla ilgili, onun için istemiştim. liste ve yorumlar için teşekkürler arkadaşlar. elbette ki optimize ediim derken alignment'ı bozup yavaşlatmam bile söz konusu. ama problem değil çünkü zaten performans testleri yapa yapa ilerleyeceğim. yapacağım bir optimizasyon yavaşlamaya neden olursa sebebini araştırarak devam edicem optimizasyonlara.