IPhones की समाप्ति?


10

मुझे पता है कि आईफ़ोन (और आईपैड) एआरएम प्रोसेसर पर चलते हैं, जो डिफ़ॉल्ट रूप से थोड़ा-सा एंडियन हैं (और आईओएस अपने आप में विकिपीडिया पेज के अनुसार थोड़ा-एंडियन है); हालांकि, एआरएम प्रोसेसर में छोटे-एंडियन और बड़े-एंडियन के बीच स्विच करने की क्षमता होती है। यह कैसे संभव है और यह कैसे काम करता है?


1
इस प्रश्न का उत्तर किसी समस्या को हल करने या iPhone का उपयोग करने के अपने अनुभव को बेहतर बनाने के लिए कैसे उपयोगी होगा? यदि यह एक गैर-डेवलपर अंत उपयोगकर्ता की कुछ वास्तविक दुनिया की चिंताओं को संबोधित करता है, तो इससे कोई फर्क नहीं पड़ता कि यह कितना तकनीकी है, लेकिन अगर सवाल केवल डेवलपर्स के लिए रुचि का है, तो यह यहां से ऑफ-टॉपिक है।
डैनियल

ठीक है, तो क्या मुझे इसे स्टैकओवरफ्लो में स्थानांतरित करना चाहिए?
slartibartfast


6
आइए पहले प्रश्न को तेज करें। हम छोटे प्रश्नों की तलाश में हैं जो एक लंबे उत्तर को आमंत्रित करते हैं। यह सभी साइटों के लिए लागू होता है। SuperUser सामान्य रूप से किसी भी प्रकार के iOS प्रश्नों के लिए जगह नहीं है। हम iOS पर हार्डवेयर प्रश्नों के लिए सबसे अच्छी जगह हैं। यदि आपके पास एक विशिष्ट प्रोग्रामिंग समस्या है, तो उस प्रश्न को पूछें और बताएं कि iOS हार्डवेयर एंडियननेस आपके विशिष्ट प्रोग्रामिंग प्रश्न को कैसे प्रभावित कर रहा है, यह [एसओ और यहां नहीं उस मंच में जाने का रास्ता होगा]। यदि आप इस मुद्दे पर उपयोगकर्ता का दृष्टिकोण चाहते हैं, तो किसी भी साइट को घर से बेहतर जगह पर देखना मुश्किल है, जो यहां से सवाल करता है।
bmike

2
"एआरएम थोड़ा-सा एंडियन है, 32-बिट आरआईएससी आर्किटेक्चर जो कि व्यापक रूप से मोबाइल उपकरणों द्वारा उपयोग किया जाता है। यहां एक छोटा सा नोट होगा: एआरएम बाय-एंडियन (बायसेरसेक्शुअल, यदि आप होगा); आप एंडियननेस को सबसे निचले स्तर से टॉगल कर सकते हैं। यह बस ऐसा होता है कि आईओएस इसे छोटे एंडियन के रूप में उपयोग करता है। मुझे बेसबैंड चिप (जो कि एआरएम कोर भी है, कम से कम मूल आईफोन के साथ - दूसरों के साथ कभी नहीं निपटाया) बड़ा एंडियन होने का एहसास होता है। वास्तव में, दुर्भाग्य से, आप कर सकते हैं। यह प्रति-प्रक्रिया स्तर, IIRC, जैसे कि आप PowerPC (एमुलेटर के लिए एक हुयुंग पर्क) के साथ कर सकते हैं। " news.ycombinator.com/item?id=1527676
0x6A75616E

जवाबों:


6

यहां तक ​​कि अगर आपको लगता है कि आपको किसी को क्या करना पड़ सकता है, यह जानने की आवश्यकता नहीं है। किसी को यह समझाने की आवश्यकता नहीं है कि किसी को इसकी आवश्यकता नहीं है क्योंकि आप संदर्भ को नहीं जानते होंगे। सवाल यह नहीं है कि "क्या मुझे एंडियननेस जानने की जरूरत है" लेकिन यह "बड़ा या छोटा एंडियन" है। तो कृपया विषय पर ध्यान केंद्रित करें!

यह कहते हुए कि शायद यह सबसे अच्छा अभ्यास है अगर हम पहिया का फिर से आविष्कार नहीं करते हैं और सिर्फ मैक्रोज़ पर भरोसा करते हैं तो Apple इसके लिए प्रदान करता है। इसका कारण यह है कि उन्होंने इन मैक्रों को अनुकूलित करने के लिए कुछ समय बिताया है और सुनिश्चित किया है कि सिम्युलेटर के साथ-साथ मैक, आईफोन और उनके सभी ओएस और हार्डवेयर पर भी काम किया जाए।

यदि आप खोदते हैं कि क्या हो रहा है जब आप आह्वान करते हैं, CFSwapInt16BigToHostतो आप उन टिप्पणियों को देख सकते हैं जो सुझाव देते हैं कि ये मैक्रो उत्पादन कर रहे हैं शायद सबसे अच्छा मशीन कोड जिसे आप संकलक अनुकूलन की सहायता से प्राप्त कर सकते हैं:

OS_INLINE
uint16_t
_OSSwapInt16(
    uint16_t        data
)
{
  /* Reduces to 'rev16' with clang */
  return (uint16_t)(data << 8 | data >> 8);
}

OS_INLINE
uint32_t
_OSSwapInt32(
    uint32_t        data
)
{
#if defined(__llvm__)
  data = __builtin_bswap32(data);
#else
  /* This actually generates the best code */
  data = (((data ^ (data >> 16 | (data << 16))) & 0xFF00FFFF) >> 8) ^ (data >> 8 | data << 24);
#endif

  return data;
}

3

एंडियननेस कुछ ऐसा नहीं है जो अंत उपयोगकर्ताओं के साथ कोई वास्तविक बातचीत है - लेकिन यहां एप्पल उत्पादों के उपयोगकर्ताओं के लिए इसका 10,000 फुट सारांश है।

संक्षेप में - एक आंतरिक प्रोसेसर के लिए अंतरण एक भाषा के लिए लेखन दिशा के समान है। जब आप किसी अंग्रेजी पाठ के अक्षरों को देखते हैं, तो हम सभी शीर्ष बाईं ओर शुरू करने और पहले दाईं ओर नीचे पढ़ने के लिए सहमत होते हैं। अन्य भाषाएं दाईं ओर से शुरू होती हैं और बाईं ओर पढ़ती हैं और कुछ बाएं या दाएं चलने से पहले नीचे भी पढ़ती हैं

यह वास्तव में एक उपयोगकर्ता के लिए कोई फर्क नहीं पड़ता अगर किसी पते या संख्या के आंतरिक प्रतिनिधित्व में बिट्स को थोड़ा एंडियन या बड़ा एंडियन संग्रहीत किया जाता है। वास्तव में मैक पर ओएस एक्स एक बड़े-एंडियन प्रतिनिधित्व का पालन करता है और आईओएस छोटे-एंडियन ऑर्डर का पालन करता है । इस तथ्य का किसी भी तरह से मतलब नहीं है कि दो डिवाइस एक साथ ठीक से काम नहीं कर सकते हैं। यह काम करता है क्योंकि यह प्रतिनिधित्व केवल आंतरिक रूप से होता है और उपयोगकर्ताओं के रूप में हमारे सामने नहीं आता है।


10
PowerPC पर OSX बिग एंडियन है, इंटेल पर यह लिटिल एंडियन है।
zaph
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.