मैं वर्तमान में रॉबर्ट लव द्वारा 'लिनक्स कर्नेल डेवलपमेंट' पढ़ रहा हूं और मुझे समझ में नहीं आता कि यह असेंबली क्या कर रही है।लिनक्स कर्नेल विकास
असल में, प्रत्येक प्रक्रिया कर्नेल स्टैक में, struct thread_info
है जो ढेर के अंत में रहता है। अब, x86 आर्किटेक्चर पर, हम जाहिरा तौर पर इस (यह मानते हुए 8KB ढेर आकार) निम्नलिखित विधानसभा का उपयोग करके प्राप्त कर सकते हैं
movl $-8192, %eax
andl %esp, %eax
तो मूल रूप से Anding 0xffffe000 द्वारा ढेर सूचक। मैं इस बारे में उलझन में हूं कि यहां क्या हो रहा है? मुझे नहीं लगता कि %esp
के कम से कम 13 बिट्स का मुखौटा क्यों हमें संरचना में ले जाता है। मुझे पता है कि समझाए जाने के बाद मैं बेवकूफ महसूस करूंगा, लेकिन यह मुझे परेशान कर रहा है।
धन्यवाद।
मैं वर्तमान में इस पुस्तक को पढ़ रहा हूं और मेरे पास और भी बुनियादी सवाल है: आप कैसे जानते हैं कि '-8192'' 0xffffe000' है? सीपीयू के रजिस्टरों में कितनी नकारात्मक संख्याएं संग्रहीत की जाती हैं? –