64-बिट असेंबली की कला

*The Art of 64‑Bit Assembly* का एक नया volume, जो Windows x64 और MASM पर केंद्रित है, इस व्यापक बहस को जन्म देता है कि शक्तिशाली compilers और large language models के युग में assembly सीखना और हाथ से लिखना अभी भी कितना उपयोगी है। कई commenters का तर्क है कि systems को समझने, critical low-level code लिखने, और narrow hotspots में peak performance हासिल करने के लिए assembly अब भी आवश्यक है, जबकि अन्य का कहना है कि आधुनिक compilers आम तौर पर humans से बेहतर होते हैं, सिवाय अत्यधिक specialized मामलों के। थ्रेड में ABI और calling convention की बारीकियाँ, assembler tool preferences (MASM बनाम NASM/FASM/GAS), और यह निराशा भी शामिल है कि AI और marketing से जुड़ी बहसें अक्सर तकनीकी रूप से समृद्ध पुस्तकों के substantive engagement को overshadow कर देती हैं।

C++ ABI, vtables, और Windows conventions

  • थ्रेड स्पष्ट करता है कि vtable layout C++ compiler ABI (MSVC बनाम Itanium) का हिस्सा है, न कि kernel ABI का।
  • Windows user-mode APIs C linkage का उपयोग करती हैं; vtables और COM user-space conventions हैं।
  • COM vtables भाषा-स्वतंत्र हैं: पहले entries विशिष्ट methods होती हैं, सभी __stdcall पर, और layout प्रभावी रूप से C++ के एक प्रतिबंधित subset से मेल खाता है।
  • MSYS2/Cygwin जैसे toolchains calling conventions को मिलाते हैं: भीतर SysV/Itanium, और API boundaries पर Windows conventions।
  • निष्कर्ष: interoperability इस बात पर निर्भर करती है कि हर component कौन-सा ABI और calling convention उपयोग करता है, इसे समझना।

क्या LLMs के युग में भी assembly लिखी जाती है?

  • कई लोगों का कहना है हाँ: OS context switches, interrupt handlers, real-time MCUs, JITs, coroutines, runtimes, और बहुत hot या timing-critical loops के लिए।
  • कई लोग assembly को एक hobby और systems को गहराई से समझने का तरीका मानते हैं।
  • कुछ के अनुसार LLMs assemblers के बीच translation, ARM SIMD, और reverse-engineering tools के driver के रूप में अच्छी तरह काम करते हैं।
  • दूसरों का मानना है कि LLM-generated assembly अविश्वसनीय और धीमी होती है, और critical code के लिए उस पर भरोसा नहीं किया जा सकता।
  • सहमति: अधिकांश code के लिए compilers आम तौर पर humans से बेहतर हैं; लेकिन छोटे, अत्यधिक specialized, performance-critical kernels में humans अभी भी उन्हें पछाड़ सकते हैं।

AI, समझ, और किताब की positioning

  • एक marketing line पर बहस कि AI द्वारा vtables की व्याख्या में “genuine understanding” नहीं होती।
  • कुछ इसे anti-AI marketing कहते हैं; अन्य का तर्क है कि भले ही models किताब से trained हों, वे उसे reliably लागू नहीं करेंगे और पढ़ने जैसी समझ नहीं देंगे।
  • चिंता है कि चर्चा “क्या यह AI-generated है?” में डूब जाती है, तकनीकी सामग्री की बजाय।

Assember, tooling, और macro/preprocessor usage

  • MASM बनाम NASM/YASM/FASM/GAS पर मजबूत रायें; MASM को features के लिए सराहा गया, लेकिन Windows-centric होने और उपलब्धता के लिए आलोचना की गई।
  • GAS को compiler-oriented माना गया, जिसमें macro सुविधाएँ कमजोर हैं; कुछ लोग namespaces, register/stack state, और portability संभालने के लिए external preprocessors या शक्तिशाली macro assemblers पर निर्भर रहते हैं।
  • ऐतिहासिक “assembler wars” की यादें साझा की गईं; आधुनिक practice अक्सर assemblers को मिलाती है और macro libraries का भारी उपयोग करती है।

x86/ARM assembly के आसपास किताबें और ecosystem

  • कई अन्य assembly और low-level programming books सुझाई गईं (x86-64, ARM, Linux-oriented)।
  • कई commenters इस “Art of Assembly” series और संबंधित low-level coding books के पिछले editions की सराहना करते हैं, हालांकि Windows पर मजबूत जोर और compilers पर कुछ अविश्वास नोट करते हैं。