بنا به دلایل نامعلومی، اپلیکیشن های نیتیو درجاییکه کد منبع وجود نداشته باشد crash می شوند. در این دوره با یادگیری زبان اسمبلی راه حل هایی در باب این موضوع فرا خواهید گرفت. نه تنها درباره دستورالعمل های زبان اسمبلی مورد استفاده توسط کامپایلر بلکه درباره نحوه انتقال پارامترها، فراخوانی conventions، branching و vectorization یاد می گیرید. با x86 و x64 از crash شدن در امانید.

سرفصل:

  • مقدمه
  • CPU و زبان اسمبلی
  • رجیسترهای  CPU
  • اهداف رجیسترهای  CPU
  • فرمت دستورالعمل، Operands و  منابع حافظه
  • اسمبلر درون خطی و دستورالعمل NOP
  • PUSH، POP، و نحوه صحیح تماشای پشته
  • آموزش MOV
  • دستورالعمل SUB و ADD
  • تابع 32 بیت Prolog و Epilog
  • دستورالعمل LEA
  • دستورالعمل CALL و RET
  • 32Bit Calling Conventions
  • 32Bit __cdecl Calling Convention
  • 32Bit __stdcall Calling Convention
  • 32Bit __fastcall Calling Convention
  • 32Bit This Calling Convention
  • 32Bit Naked Calling Convention
  • The One 64-Bit Calling Convention
  • پارامترهای مثبت برای دسترسی به پارامترهای 32بیت
  • Full 32-Bit Stack Setup Example
  • Full 64-Bit Stack Setup Example
  • دستورالعمل های دستکاری داده: AND, OR, NOT, NEG, XOR, INC, DEC, SHL, SHR, MOVSX, MOVZX, و LOCK Prefix
  • دستورالعمل های تست و مقایسه: CMP و TEST
  • دستورالعمل های Branch متشکل از JMP, JE, JL, JG, JNE, JGE, و JLE
  • دستورالعمل های String متشکل از MOVS, SCAS, STOS, CMPS, and The REP, REPE, و REPNE Prefixes
  • دستورالعمل های Vectorization و SSE2
  • رجیسترهای FS و GS برای Thread Information Block
  • ساختارها و کلاس ها در حافظه
  • کلاس های سی پلاس پلاس و Pointer
  • نتیجه