मैं कुछ सी कार्यक्रमों को अलग करके उत्पन्न कुछ असेंबली देख रहा हूं और मैं एक अनुकूलन से उलझन में हूं जिसे मैं अक्सर बार-बार देखता हूं।जीसीसी ने घटाव के लिए "उप" के बजाय "ली" क्यों छोड़ा?
जब मैं जीसीसी संकलक पर भी अनुकूलन नहीं है घटाव के लिए subl
अनुदेश का उपयोग करता है, लेकिन जब मैं की क्या ज़रूरत है अनुकूलन चालू (-O3
सटीक होना करने के लिए) संकलक घटाव के बजाय एक leal
अनुदेश का उपयोग करता है, नीचे दिए गए उदाहरण:
बिना अनुकूलन:
83 e8 01 subl $0x1, %eax
अनुकूलन के साथ
8d 6f ff leal -0x1(%edi), %ebp
इनमें से दोनों निर्देश 3 बाइट लंबे हैं, इसलिए मुझे यहां अनुकूलन नहीं दिख रहा है। क्या कोई मेरी मदद कर सकता है और संकलक की पसंद को समझाने की कोशिश कर सकता है?
किसी भी मदद की सराहना की जाएगी।
मैंने इसे इस परिप्रेक्ष्य से नहीं माना था क्योंकि गैर-अनुकूलित संस्करण केवल घटाव में तत्काल मानों का उपयोग करता है। धन्यवाद, यह बहुत उपयोगी था। –