کتاب تسلط بر برنامهنویسی x86 با زبان اسمبلی: دروازهای به اعماق سختافزار با فرمت AZW3 برای کتابخوان کیندل و فرمت EPUB
تسلط بر برنامهنویسی x86 با زبان اسمبلی: دروازهای به اعماق سختافزار تسلط بر برنامهنویسی x86 با زبان اسمبلی: دروازهای به اعماق سختافزار آیا میخواهید پرده از رازهای درونی کامپیوترها بردارید؟ آیا ب...
🎓 دوره آموزشی جامع
📚 اطلاعات دوره
عنوان دوره: دوره تسلط بر برنامهنویسی x86 با زبان اسمبلی: دروازهای به اعماق سختافزار
موضوع کلی: معماری کامپیوتر و برنامهنویسی سیستمی
موضوع میانی: مبانی زبان اسمبلی و ساختار پردازندههای x86
📋 سرفصلهای دوره
- 1. مقدمه: چرا زبان اسمبلی یاد بگیریم؟
- 2. مروری بر معماری کامپیوتر: مدل Von Neumann
- 3. سیستمهای عددی: باینری، هگزادسیمال و دسیمال
- 4. تبدیل بین سیستمهای عددی
- 5. نمایش اعداد صحیح علامتدار: مکمل دو
- 6. عملیات حسابی باینری: جمع و تفریق
- 7. مفاهیم پایه منطق دیجیتال: گیتهای AND, OR, NOT, XOR
- 8. ساختار پردازندههای x86: از 8086 تا مدرن
- 9. حالتهای عملیاتی پردازنده: Real-Address, Protected, Long Mode
- 10. معرفی ثباتهای (Registers) عمومی x86
- 11. ثباتهای EFLAGS و EIP
- 12. معرفی حافظه و آدرسدهی
- 13. نصب و راهاندازی محیط برنامهنویسی (MASM/NASM)
- 14. ساختار یک برنامه اسمبلی پایه
- 15. اولین برنامه: "Hello, World!" در اسمبلی
- 16. دستورالعمل MOV: انتقال دادهها
- 17. دستورالعملهای حسابی پایه: ADD و SUB
- 18. دستورالعملهای INC و DEC
- 19. معرفی دستورالعملهای منطقی: AND, OR, XOR
- 20. دستورالعمل NOT: معکوس کردن بیتها
- 21. تعریف دادهها: بایت، کلمه و کلمه مضاعف (BYTE, WORD, DWORD)
- 22. تعریف متغیرهای مقداردهی نشده در سگمنت .BSS
- 23. آدرسدهی مستقیم حافظه
- 24. آدرسدهی غیرمستقیم حافظه
- 25. اپراتورهای OFFSET و PTR
- 26. دستورالعمل XCHG: تعویض مقادیر
- 27. دستورالعمل LEA: بارگذاری آدرس مؤثر
- 28. دستورالعملهای پرچم (Flag): بررسی نتایج عملیات
- 29. پرچمهای Carry و Overflow
- 30. پرچمهای Zero و Sign
- 31. دستورالعمل CMP و مقایسه دادهها
- 32. پرشهای بدون شرط: JMP
- 33. پرشهای شرطی بر اساس پرچمها (JZ, JNZ, JC, JNC)
- 34. پرشهای شرطی برای اعداد علامتدار (JG, JL, JGE, JLE)
- 35. پرشهای شرطی برای اعداد بدون علامت (JA, JB, JAE, JBE)
- 36. ساختار حلقهها با استفاده از JMP و CMP
- 37. دستورالعمل LOOP
- 38. مثال عملی: محاسبه فاکتوریل با حلقه
- 39. ساختارهای شرطی: پیادهسازی if-else
- 40. پیادهسازی ساختار switch-case
- 41. پشته (Stack): مفاهیم پایه
- 42. دستورالعملهای PUSH و POP
- 43. بررسی ثباتهای ESP و EBP
- 44. تعریف رویهها (Procedures) با PROC و ENDP
- 45. دستورالعملهای CALL و RET
- 46. ایجاد رویههای تو در تو (Nested Procedures)
- 47. فریم پشته (Stack Frame) چیست؟
- 48. پاس دادن آرگومانها به رویهها از طریق ثباتها
- 49. پاس دادن آرگومانها به رویهها از طریق پشته
- 50. ایجاد متغیرهای محلی روی پشته
- 51. حفظ و بازیابی ثباتها در رویهها
- 52. قراردادهای فراخوانی (Calling Conventions): cdecl, stdcall
- 53. کتابخانههای لینک (Linking Libraries): معرفی Irvine32/Irvine64
- 54. استفاده از رویههای کتابخانهای برای ورودی/خروجی
- 55. بازگشت (Recursion): پیادهسازی تابع بازگشتی
- 56. آرایهها: تعریف و دسترسی به عناصر
- 57. پردازش آرایهها با حلقهها
- 58. آدرسدهی ایندکسدار (Indexed Addressing)
- 59. رشتهها در اسمبلی: تعریف و نمایش
- 60. دستورالعملهای پایه پردازش رشته (LODS, STOS)
- 61. دستورالعملهای پیشرفته پردازش رشته (MOVS, CMPS, SCAS)
- 62. پیشوندهای تکرار: REP, REPE, REPNE
- 63. آرایههای دو بعدی: پیادهسازی و پیمایش
- 64. دستورالعملهای ضرب: MUL و IMUL
- 65. دستورالعملهای تقسیم: DIV و IDIV
- 66. دستورالعملهای شیفت منطقی: SHL و SHR
- 67. دستورالعملهای شیفت حسابی: SAL و SAR
- 68. دستورالعملهای چرخش: ROL و ROR
- 69. دستورالعملهای چرخش با کری: RCL و RCR
- 70. مثال کاربردی: رمزنگاری ساده با XOR و چرخش
- 71. وقفهها (Interrupts): مفاهیم و کاربردها
- 72. جدول توصیفگر وقفه (IDT)
- 73. فراخوانیهای سیستمی (System Calls) در ویندوز
- 74. فراخوانیهای سیستمی (System Calls) در لینوکس
- 75. برنامهنویسی فایل: ایجاد و نوشتن در فایل
- 76. برنامهنویسی فایل: خواندن از فایل
- 77. مدیریت حافظه در سطح سیستمعامل
- 78. تخصیص حافظه دینامیک
- 79. ترکیب کدهای اسمبلی و C/C++: مقدمه
- 80. فراخوانی توابع C از اسمبلی
- 81. فراخوانی توابع اسمبلی از C
- 82. پاس دادن متغیرهای ساده بین C و اسمبلی
- 83. پاس دادن آرایهها و رشتهها بین C و اسمبلی
- 84. پاس دادن ساختارها (Structs) بین C و اسمبلی
- 85. اسمبلی درونخطی (Inline Assembly) در C/C++
- 86. معماری x86-64: حالت ۶۴ بیتی (Long Mode)
- 87. ثباتهای ۶۴ بیتی (RAX, RBX, ...) و ثباتهای جدید (R8-R15)
- 88. آدرسدهی نسبی RIP
- 89. قرارداد فراخوانی در x86-64 (System V AMD64 ABI)
- 90. برنامهنویسی ممیز شناور (Floating-Point): مقدمهای بر FPU
- 91. ثباتهای x87 FPU و پشته ممیز شناور
- 92. دستورالعملهای پایه ممیز شناور (FLD, FST, FADD, FSUB)
- 93. مقایسه اعداد ممیز شناور
- 94. مقدمهای بر SIMD: پردازش موازی دادهها
- 95. دستورالعملهای MMX
- 96. دستورالعملهای SSE: ثباتهای XMM و عملیات اسکالر/پک شده
- 97. دستورالعملهای AVX: ثباتهای YMM
- 98. مدیریت حافظه پیشرفته: سگمنتیشن و صفحهبندی (Paging)
- 99. بهینهسازی کد اسمبلی: همراستاسازی و زمانبندی دستورالعملها
- 100. نگاهی به بوت لودرها و فرآیند راهاندازی سیستم
تگها:
ASM
Assembly
C#
Computer Architecture
Linux
low-level programming
System Programming
Windows
x86
برنامهنویسی سیستمی
پردازنده
زبان اسمبلی
معماری کامپیوتر
میکروپروسسور
نظرات
هنوز نظری ثبت نشده است.
وارد شوید تا نظر ثبت کنید.