tr-demoscene
the scene => coding => pc => Konuyu başlatan: xcoder - 19.04.2009 02:03:03
-
debugta unassemble yaptığımda XOR komutunun kodu 33 görünüyor. ama ben yazınca 31 olarak yazıyor. operantlar aynı. böyle bir kaç farklı opcode var. bunun neden kaynaklandığı konusunda fikri olan varmı?
-
pc'de tam bilgim olmasa da, amiga'dakinden feyz alarak yorumda bulunacağım: kullanılan komutun operand'ları ve byte genişlikleri vs komutun opcode karşılıklarının değişik gözükmesine sebep olabilir.
-
33 cikiyorsa Exx bir register kullanilmistir.
sen yazdiginda cikan 31 ise xx registeri kullanildigini gosterir.
buyuk ihtimal debug Exx registerlarini desteklemedigi icin ekranda ayni operant varmis gibi gozukuyordur.
ollydbg kullan.
debugta unassemble yaptığımda XOR komutunun kodu 33 görünüyor. ama ben yazınca 31 olarak yazıyor. operantlar aynı. böyle bir kaç farklı opcode var. bunun neden kaynaklandığı konusunda fikri olan varmı?
-
evet gnos ve spaz'in dedigi gibi kullanilan register ve adresleme moduna gore degisen bazi bitler vardir opcode'da.
ornegin (yine amigada) ADD opcode'u aslinda ADDA, ADDI, ADDQ, ADDX gibi farkli kullanimlara sahiptir ama assembler kullanirken biz sadece ADD yazariz, arkaplanda assembler kullanilan size (byte, word, long), adresleme modu (relative, direct, immediate vs.) gibi seylere gore farkli degerler uretir.