Delphi - Assembly

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
Lost Soul
Üye
Mesajlar: 1064
Kayıt: 01 Nis 2007 02:55
Konum: mekan ANKARA toprak ELAZIĞ
İletişim:

Delphi - Assembly

Mesaj gönderen Lost Soul »

Selamun Aleyküm.
Arkadaşlara forumda arrattm. Googleda arattım ama güzel bir döküman bulamadım.

Delphinin desteklediği asembly kod listesi var elimde ancak
hangi kodun ne işe yaradığı yok.
İnternette ise bazı bilinen kodlar var (push,mov,call vb.)

Elinde Assembly kod listesi ve ne işe yaradığı hakkında dökümanı olan var ise paylaşa bilir mi yada bir link verebilir mi?.

Kapsamlı bir açıklama gerekmiyor.
Türkçe kaynak da şart değil ingilizce de kabulumdur. :D
Sadece Şu Kod : Bu işe yarar şeklinde kısa açıklamalar olan bir döküman bile yeterli benm için.
Örnek filan da gerekmez :D

Yardımlarınız için şimdiden teşekkürler.
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

s.a.
delphinin help ine baktınız mı?
eğer bakmadıysanız bakmanızı tavsiye ederim.
elinizdeki kodların listesini verirseniz bilen arkadaşlar hangi komutun ne işe yaradığını yazabilir.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Kullanıcı avatarı
Lost Soul
Üye
Mesajlar: 1064
Kayıt: 01 Nis 2007 02:55
Konum: mekan ANKARA toprak ELAZIĞ
İletişim:

Mesaj gönderen Lost Soul »

aslangeri yazdı:s.a.
elinizdeki kodların listesini verirseniz bilen arkadaşlar hangi komutun ne işe yaradığını yazabilir.

Kod: Tümünü seç

LOCK 
 REP 
 REPE 
 REPZ 
 REPNE 
 
REPNZ 
 SEGES 
 SEGCS 
 SEGSS 
 SEGDS 
 
SEGFS 
 SEGGS 
 ADC,mLeft 
 ADD,mLeft 
 AND,mLeft 
 
AAA,mAX 
 AAS,mAX 
 AAD,mAX 
 AAM,mAX 
 BOUND,
  mNONE 
 
BSF,mLeft 
 BSR,mLeft 
 BT 
 BTC,mLeft 
 BTR,mLeft 
 
BTS,mLeft 
 CALL,mNONE 
 CMP 
 CBW,mAX 
 CWDE,mAX 
 
CWD,
  <mAX,mDX> 
 CDQ,
  <mAX,mDX> 
 CLC 
 CLD 
 CLI 
 
CMC 
 CMPSB,
  <mSIDI> 
 CMPSW,
  <mSIDI> 
 CMPSD,
  <mSIDI> 
 DAA,mAX 
 
DAS,mAX 
 DEC,mLeft 
 DIV,mLeft 
 ENTER,
  mNONE 
 HLT 
 
IDIV,mLeft 
 IMUL,mLeft 
 IN,mLeft 
 INC,mLeft 
 INSB,mDI 
 
INSW,mDI 
 INSD,mDI 
 INT 
 INTO 
 IRET 
 
IRETD 
 JMP 
 JO 
 JNO 
 JC 
 
JB 
 JNAE 
 JNC 
 JAE 
 JNB 
 
JE 
 JZ 
 JNE 
 JNZ 
 JBE 
 
JNA 
 JA 
 JNBE 
 JS 
 JNS 
 
JP 
 JPE 
 JNP 
 JPO 
 JL 
 
JNGE 
 JGE 
 JNL 
 JLE 
 JNG 
 
JG 
 JNLE 
 JCXZ 
 JECXZ 
 LAHF,mAX 
 
LEA,mLeft 
 LEAVE,
  mNONE 
 LDS,mSpecial 
 LES,mSpecial 
 LFS,mSpecial 
 
LGS,mSpecial 
 LSS,mSpecial 
 LODSB,
  <mAX,mDI> 
 LODSW,
  <mAX,mDI> 
 LODSD,
  <mAX,mDI> 
 
LOOP,mCX 
 LOOPE,mCX 
 LOOPZ,mCX 
 LOOPNE,mCX 
 LOOPNZ,mCX 
 
LOOPD,mCX 
 LOOPDE,mCX 
 LOOPDZ,mCX 
 LOOPDNE,
  mCX 
 LOOPDNZ,
  mCX 
 
MOV,mLeft 
 MOVSX,mLeft 
 MOVZX,mLeft 
 MOVSB,
  <mSIDI> 
 MOVSW,
  <mSIDI> 
 
MOVSD,
  <mSIDI> 
 MUL,mLeft 
 NEG,mLeft 
 NOP 
 NOT,mLeft 
 
OR,mLeft 
 OUT 
 OUTSB,mSI 
 OUTSW,mSI 
 OUTSD,mSI 
 
POP,mLeft 
 POPF 
 POPA,mSpecial 
 POPAD,
  mSpecial 
 POPFD,
  mSpecial 
 
PUSH 
 PUSHF 
 PUSHA 
 PUSHAD 
 PUSHFD 
 
RET 
 RETN 
 RETF 
 SUB,mLeft 
 SBB,mLeft 
 
RCL,mLeft 
 RCR,mLeft 
 ROL,mLeft 
 ROR,mLeft 
 SAL,mLeft 
 
SHL,mLeft 
 SAR,mLeft 
 SHR,mLeft 
 SHLD,mLeft 
 SHRD,mLeft 
 
SAHF 
 SCASB,mDI 
 SCASW,mDI 
 SCASD,mDI 
 STC 
 
STD 
 STI 
 STOSB,mDI 
 STOSW,mDI 
 STOSD,mDI 
 
TEST 
 WAIT 
 XCHG,<mLeft,
  mRight> 
 XLAT,mAX 
 XOR,mLeft 
 
SETA,mLeft 
 SETAE,mLeft 
 SETB,mLeft 
 SETBE,mLeft 
 SETC,mLeft 
 
SETE,mLeft 
 SETG,mLeft 
 SETGE,mLeft 
 SETL,mLeft 
 SETLE,mLeft 
 
SETNA,mLeft 
 SETNAE,mLeft 
 SETNB,mLeft 
 SETNBE,mLeft 
 SETNC,mLeft 
 
SETNE,mLeft 
 SETNG,mLeft 
 SETNGE,mLeft 
 SETNL,mLeft 
 SETNLE,mLeft 
 
SETNO,mLeft 
 SETNP,mLeft 
 SETNS,mLeft 
 SETNZ,mLeft 
 SETO,mLeft 
 
SETP,mLeft 
 SETPE,mLeft 
 SETPO,mLeft 
 SETS,mLeft 
 SETZ,mLeft 
 
ARPL 
 LAR,mLeft 
 CLTS 
 LGDT 
 SGDT 
 
LIDT 
 SIDT 
 LLDT 
 SLDT 
 LMSW 
 
SMSW 
 LSL,mLeft 
 LTR,mLeft 
 STR,mLeft 
 VERR 
 
VERW 
 BSWAP,mLeft 
 XADD,mLeft 
 CMPXCHG,
  <mLeft,mAX> 
 INVD 
 
WBINVD 
 INVLPG 
 FLD,m87 
 FILD,m87 
 FST,m87 
 
FSTP,m87 
 FIST,m87 
 FISTP,m87 
 FADD,m87 
 FADDP,m87 
 
FIADD,m87 
 FSUB,m87 
 FSUBP,m87 
 FSUBR,m87 
 FSUBRP,m87 
 
FISUB,m87 
 FISUBR,m87 
 FMUL,m87 
 FMULP,m87 
 FIMUL,m87 
 
FDIV,m87 
 FDIVP,m87 
 FDIVR,m87 
 FDIVRP,m87 
 FIDIV,m87 
 
FIDIVR,m87 
 FCOM,m87 
 FCOMP,m87 
 FCOMPP,m87 
 FICOM,m87 
 
FICOMP,m87 
 F2XM1,m87 
 FABS,m87 
 FBLD,m87 
 FBSTP,m87 
 
FCHS,m87 
 FDECSTP,m87 
 FFREE,m87 
 FINCSTP,m87 
 FLD1,m87 
 
FLDCW,m87 
 FLDENV,m87 
 FLDL2E,m87 
 FLDL2T,m87 
 FLDLG2,m87 
 
FLDLN2,m87 
 FLDPI,m87 
 FLDZ,m87 
 FNOP,m87 
 FPREM,m87 
 
FPATAN,m87 
 FPTAN,m87 
 FRNDINT,m87 
 FRSTOR,m87 
 FSCALE,m87 
 
FSETPM,m87 
 FSQRT,m87 
 FTST,m87 
 FWAIT,m87 
 FXAM,m87 
 
FXCH,m87 
 FXTRACT,m87 
 FYL2X,m87 
 FYL2XP1,m87 
 FCLEX,m87 
 
FNCLEX,m87 
 FDISI,m87 
 FNDISI,m87 
 FENI,m87 
 FNENI,m87 
 
FINIT,m87 
 FNINIT,m87 
 FSAVE,m87 
 FNSAVE,m87 
 FSTCW,m87 
 
FNSTCW,m87 
 FSTENV,m87 
 FNSTENV,m87 
 FSTSW,m87 
 FNSTSW,m87 
 
FUCOM,m87 
 FUCOMP,m87 
 FUCOMPP,m87 
 FPREM1,m87 
 FCOS,m87 
 
FSIN,m87 
 FSINCOS,m87 

Delphi 7 kullanıyorum. Helpinde işe yarar bişey bulamadım.
ing.. veya trk. dökümanı oolan varsa ve palaşırsa sevinirim.

ilk mesajı yazdığımdan bu yana dünya kadar döküman indirdim ama. hiçbirisi komutlara değinmemiş. birer ikişer örneklerle bişeyler ıspatlamaya çalışmışlar o kadar.
Kullanıcı avatarı
bluekid
Kıdemli Üye
Mesajlar: 541
Kayıt: 11 Haz 2004 10:45
İletişim:

Mesaj gönderen bluekid »

AsmHelp işine yararsa bir bakıver
http://derindelimavi.blogspot.com/2007/ ... ogram.html
Kullanıcı avatarı
Lost Soul
Üye
Mesajlar: 1064
Kayıt: 01 Nis 2007 02:55
Konum: mekan ANKARA toprak ELAZIĞ
İletişim:

Mesaj gönderen Lost Soul »

Programcının istediği bi kod Allah verdi Kod Bankası :D
Gerçekten çok Teşekkür ederim.
Şu assembly işini bi sökiim.
Burası için de bi döküman hazırlarım inşallah.
fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

Mesaj gönderen fduman »

Assembly öğrenip ne yapacaksın merak ettim. Buna vakit harcamak yerine C, Java öğrensen kendin için daha hayırlı bir iş yapmış olursun.

Piyasada artık bu kadar alt seviyede diller kullanılmıyor. Yeni nesil virusler bile artık C ile yazılıyor.
Kullanıcı avatarı
Lost Soul
Üye
Mesajlar: 1064
Kayıt: 01 Nis 2007 02:55
Konum: mekan ANKARA toprak ELAZIĞ
İletişim:

Mesaj gönderen Lost Soul »

fduman yazdı:Assembly öğrenip ne yapacaksın merak ettim. Buna vakit harcamak yerine C, Java öğrensen kendin için daha hayırlı bir iş yapmış olursun.

Piyasada artık bu kadar alt seviyede diller kullanılmıyor. Yeni nesil virusler bile artık C ile yazılıyor.
c ile yapılan hemen her şeyi delphi ile de yapabiliyoruz zaten. (c'nin opertatorleri güçlü ama :D)


ama Assembly'nin yeri başka
fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

Mesaj gönderen fduman »

Maalesef C ile yapabildiğin herşeyi Delphi ile yapman mümkün değil. C nin taşınabilirliği daha fazla. C ve türevleri ile yazdığın Win32 bir uygulamayı MAC OS da veya Unix/Linux üzerinde çalıştırman büyük olasılıkla mümkün olacaktır.

Assembly de kolay gelsin. :roll:
Kullanıcı avatarı
csunguray
Üye
Mesajlar: 855
Kayıt: 09 Ara 2006 05:08
Konum: Adana
İletişim:

Mesaj gönderen csunguray »

Kullanılabilecek komutların listesi icin herhangi bir Intel x86 assembly kitabina veya programlama kılavuzuna bakabilirsiniz. Delphi sadece bu komutlari kullanmaniz icin olanak sağlar. Ama bu komutların ne olacağı tamamen bilgisayarınızın işlemcisi ile ilgilidir.
C. Sunguray
csunguray at netbilisim.kom
Net Bilişim Hizmetleri

Sıradan her programcı bilgisayarın anlayabileceği kodlar yazabilir.
Sadece iyi programcılar insanların da anlayabileceği kodlar yazarlar.
Martin Fowler (http://martinfowler.com/)
Glen
Üye
Mesajlar: 277
Kayıt: 12 Eki 2005 11:58

Mesaj gönderen Glen »

Konu biraz eskimi$ ancak ben de assembly'e baslamayi dusunuyorum bu aralar. Hem forumdaki arkadaslara hem de bu zaman zarfinda ilk mesaji atan arkadasin biseyler ogrenip ogrenemedigini sormak istiyorum.

1. sorumu zaten sordum gelelim 2. soruma..

Compilerlarin yaptigi $ey hakkinda yanli$im varsa düzeltin,

1) High-level programla dillerini
a) Assembly diline ceviriyor
b) Direkt makine diline ceviriyor
ve obj dosyalarini olusturuyor.
2) Aşama, linker obj dosyalarini executable hale getiriyor
Sonuc: Program hazır.

1) Assembly hangi assembly?
Masm, Tasm?

2) Assembly'ye gerek yok C ile de programlama dili yazilir diyorsaniz Peki nedir bu olay? Ben bu sefer yapacaklarimi,

1) Uydurma programlama dili olusturulur
2) C koduna cevirilir (otomatik)
3) C'ye cevirildikten sonra assembly diline cevirilr
4) Olusturulan .obj dosyalari linker ile executable olur
5) Program hazır.

Yönündemi şekillendirmeliyim? Eğer 2. anlattigimi yapacaksam, C nin builderini ve linkerini kullanabilir miyim istedigim gibi?

Iyi calismalar, kolay gelsin.
Kullanıcı avatarı
undefined
Moderator
Mesajlar: 565
Kayıt: 06 Eki 2003 12:01
Konum: Bursa
İletişim:

Mesaj gönderen undefined »

Compilerların kodu makine diline çevirene kadar ara işlemleri olduğunu okumuştum. Yani öyle küt diye makine dili çıkmıyor. Parsing, ara bir dil oluşturma, optimizasyon, sözdizimsel(syntax) analiz, semantic(anlamsal) analiz gibi. Ben bunları yazıyorum fakat çoğu nasıl iş görür pek bilmem. Sana programlama dilllerinin teorisini öğreten kitapları okumanı tavsiye ederim. "Compiler's dragon book" diye bir kitabın çok fazla ismini duydum. Wikipedia'dan başlayabilirsin.

Assembly dilleri makine dilini çok az insancallaştırmaya yarıyor. Mesela jmp, call gibi atlama, dallanma işlenme yapan komutlara direk adresi yazman lazım yazdığın koda göre. Her kod değiştiğindede bunlara güncellemen lazım. Fakat assembly dilleri bunları senin için labellarla kolaylaştırıyor. Çalıştığın Platforma bağlı olarak onları executable hale getireiliyor. Bide abudik gubudik opcodelarla uğraşmana gerek kalmıyor.
Baktığın zaman Compiler'ın insancallaştırılmış bir dili kullanmasına gerek yok aslında.

Assembly ile işin olmasa bile temellerini öğrenmeni tavsiye ederim.
Hatta temellerine hakim olmayan bir programcının ezbere kod yazdığını, sınırlı bir programcı olacağını iddia edebilirim.
Assembly ile kod yazmak olduça zor fakat temelleri basittir.
Aşşağıdaki konuları zihninde oturtmanı tavsiye ederim.

Mesela data tipler nasıl temsil edilir 01 lerle?
Dünyada 10 çeşit insan vardır, binary bilenler ve bilmeyenler coder atasözü nedemek istiyor mesela ?
Alt yordama nasıl dallanılır? (!!)
yordamdaki değişkenler, global değişkenler nerde saklanır? (!!)
Heap nedir, stack nedir, exception nedir, kesme nedir ne işe yarar? (!!)
Protected mode, real mode nedir?
Neden 98 de yaparken XP'de IO portlara erişemiyorum direk?
32 bit işlemci niye 32bit ?(!!)

2. sorunu anlamadım, ama herhalde beyin fırtınası yapıyorsun ki bence güzel birşey. Bu bilgiler ışığında bidaha düşün.

Kolay gelsin
Glen
Üye
Mesajlar: 277
Kayıt: 12 Eki 2005 11:58

Mesaj gönderen Glen »

Merhaba, ilk oncelikle zahmet edip yazdiginiz icin tesekkur ederim.

Code optimization vs. bunlari saymadim tabiki yani aradaki islemleri gectim direk exeyi olusturma yonteminden bahsettim

assembly diline cevrildikten sonra makina koduna ceviriliyor(mus), hatta C icin kendi icinde direk makina koduna cevirdigini soylediler(masm32 forumunda) yada ben yanlis anladim tabi kesin demiyorum.

Bu yuzden arada bir karmasa var anlamadigim, programlama dili uretmek icin; real-address mode, protected mode, virtual mode vb. bunlar tabi bilinmesi gereken seyler ama kisacasi sormak istedigim, programlama dili yaratmak icin illa assembly mi (yetecek kadar degil gercek anlamda bilmek kadar) bilmek gerekir? Yoksa c++ ile de yaratilabilirmi.. Yaratilabilirse, olusturulan yeni dilin kodunu c++ a cevirip ondan sonra c++ kodu derlemek icin izlenen yoldan gitmek, performans kaybina neden olur mu? Ve bu tarz calisan bir dil var mi? Yoksa benim hayal gücü sallamanin son noktalarinimi yasiyo :) Iste bunun cevabini ariyorum :)

Kolay gelsin
Kullanıcı avatarı
undefined
Moderator
Mesajlar: 565
Kayıt: 06 Eki 2003 12:01
Konum: Bursa
İletişim:

Mesaj gönderen undefined »

Gramer tanımlama ve compiler yapımı için hazır toollar var, bunlar böyle basit masaüstü yazılımları değil, *nix kökenli yazılımlar. Bunlar lex, flex, bison, yacc. Bunlarla gramer tanımlayıp, C kodunda bir compiler kodu oluşturabiliyorsun. Pascal syntaxi üretenlerede rastlamıştım. Hatta firebird 3 stored procedure derlemek içiin bisonla çalışılıyor diye okumuştum.
Kullanıcı avatarı
bluekid
Kıdemli Üye
Mesajlar: 541
Kayıt: 11 Haz 2004 10:45
İletişim:

Mesaj gönderen bluekid »

.. Dilini kullanmak ve ... diline çevirmek farklı şeyler
Uzun söze gerek yok :)
örneği incele
http://engin_efe.tripod.com/makaleler/tupol20.htm
Glen
Üye
Mesajlar: 277
Kayıt: 12 Eki 2005 11:58

Mesaj gönderen Glen »

linkler ucmus hepsi.. tupol programi olan bana ulastirabilirmi acaba?
Cevapla