2010-04-02 15 views
6

मैं this question से अधिक पढ़ रहा था और सोच रहा था कि स्वीकृत उत्तर आर्किटेक्चर को निर्धारित करने का एक तरीका भी हो सकता है। उदाहरण के लिए, एएसएम में मैं एक वर्ड को स्टैक पर दबा सकता हूं और फिर एसपी की जांच कर सकता हूं। करने के लिए पुराने सपा नई सपा की तुलना करें:असेंबली में 32/64 बिट आर्किटेक्चर निर्धारित करें

4 की Diff का मतलब है 32 बिट
8 की Diff का मतलब है 64 बिट

हूँ मैं इस सोच में सही हूँ?

+2

मैं इस धारणा के तहत था कि 32-बिट और 64-बिट असेंबली निर्देश अलग थे। कम से कम x86 बनाम x86-64 में। – Powerlord

+2

मुझे नहीं पता, लेकिन यदि आप बस 64-बिट समर्थन का पता लगाना चाहते हैं तो आप CPUID निर्देश का उपयोग कर सकते हैं। –

+1

आम तौर पर यह संकलन समय पर ज्ञात है कि लक्ष्य 64 बिट या 32 बिट है या नहीं। वास्तव में यह एक दुर्लभ मामला होगा कि यह चाल उपयोगी होगी। साथ ही, मेरा अनुमान है कि इस तरह की किसी तरह की चाल के बिना सीधे सीधे ध्वज की जांच करने का एक तरीका है। –

उत्तर

6

नहीं, क्योंकि आपके ढेर का आकार आर्किटेक्चर पर नहीं, (वास्तविक, संरक्षित, लंबा/64, vm86, smm, आदि) में किस मोड में चल रहा है, इस पर आधारित है। उदाहरण के लिए यदि आपकी असेंबली संरक्षित मोड में चल रही है, तो आपका स्टैक 32 बिट्स (या 16 यदि आपके ऑपरेंड 16 बिट्स हैं), भले ही आपका प्रोसेसर x86-64 है।

उल्लिखित टिप्पणियों में से किसी की तरह, सीपीयूआईडी यह जानने का एकमात्र विश्वसनीय तरीका है कि आपका आर्किटेक्चर क्या है।

+0

ठीक है ... यह समझ में आता है। – IAbstract

संबंधित मुद्दे