मैं चल रहा है, जबकि एक कार्यक्रम के पैच भागों के लिए नग्न कार्यों का उपयोग करें। मैं विंडोज़ में वीसी ++ में आसानी से ऐसा कर सकता हूं। मैं इसे लिनक्स में करने की कोशिश कर रहा हूं और ऐसा लगता है कि जीसीसी नग्न कार्यों का समर्थन नहीं करता है। नग्न कार्यों के साथ संकलन कोड मुझे यह देता है: चेतावनी: 'नग्न' विशेषता निर्देश को अनदेखा किया जाता है। CentOS 5.5 i386 के तहत संकलित। एआरएम, AVR पर इस विशेषता उपयोग:जीसीसी समर्थन नग्न कार्यों का समर्थन क्यों नहीं करता है?
उत्तर
नग्न विशेषता केवल docs के अनुसार कुछ खास प्लेटफॉर्म (एआरएम, AVR, MCORE, RX और एस पी यू) पर जीसीसी द्वारा समर्थित है:
naked
, एमसीओआर, आरएक्स और एसपीयू बंदरगाहों को इंगित करता है कि निर्दिष्ट फ़ंक्शन को संकलक द्वारा उत्पन्न प्रस्ताव/एपिलॉग अनुक्रमों की आवश्यकता नहीं है। यह प्रोग्रामर पर पर इन अनुक्रम प्रदान करता है। नग्न कार्यों में शामिल सुरक्षित रूप से एकमात्र बयान एएसएम स्टेटमेंट्स हैं जिनके पास ऑपरेंड नहीं हैं। स्थानीय चर, यदि बयानों, और आगे के घोषणापत्र सहित सभी अन्य बयान से बचा जाना चाहिए। असेंबल फ़ंक्शंस का उपयोग असेंबली फ़ंक्शन के शरीर को कार्यान्वित करने के लिए किया जाना चाहिए, जबकि कंपाइलर को असेंबलर के लिए फ़ंक्शन घोषणा का निर्माण करने की इजाजत दी गई है।
मुझे यकीन नहीं है कि क्यों।
आपको केवल एएसएम कथन का उपयोग करने की आवश्यकता क्यों है जो ' ऑपरेटिंग नहीं है? लगभग सभी आदेशों का संचालन नहीं होता है (यहां तक कि 'jmp' जैसी चीजें एक ऑपरेंड लेती हैं)? –
@ सेठ: असेंबलर कोड में उपयोग किए गए निर्देशों में ऑपरेंड हो सकते हैं, लेकिन "एएसएम कथन" का मतलब असेंबलर निर्देश नहीं है, यह संपूर्ण 'एएसएम ("कुछ इंसन्स" है: आउटपुटब्लैह: इनपुटब्लैह: क्लोबबरब्लह); '। "Blahs" एएसएम कथन के संचालन हैं, और यदि आप संकलक द्वारा उत्पन्न प्रस्तावना नहीं है तो आप इसका उपयोग नहीं कर सकते हैं। आप असेंबलर लिख सकते हैं, लेकिन आप इसे सी चर के लिए हुक नहीं कर सकते हैं। –
@Steve ओह ठीक है, मुझे यह मिल गया, धन्यवाद। –
जीसीसी केवल एआरएम और अन्य एम्बेडेड प्लेटफार्मों पर नग्न कार्यों का समर्थन करता है। http://gcc.gnu.org/onlinedocs/gcc/Function-Attributes.html
इसके अलावा, आप जो भी कर रहे हैं वह स्वाभाविक रूप से असुरक्षित है, क्योंकि आप यह गारंटी नहीं दे सकते कि आप जिस कोड को पैच कर रहे हैं वह प्रोग्राम चल रहा है या नहीं।
यह एक बदसूरत समाधान है। अपने लक्षित वास्तुकला के लिए एक .asm फ़ाइल के खिलाफ लिंक करें।
86 आप के बजाय वैश्विक क्षेत्र में एएसएम का उपयोग करके वैकल्पिक हल कर सकते हैं पर:
int write(int fd, const void *buf, int count);
asm
(
".global write \n\t"
"write: \n\t"
" pusha \n\t"
" movl $4, %eax \n\t"
" movl 36(%esp), %ebx \n\t"
" movl 40(%esp), %ecx \n\t"
" movl 44(%esp), %edx \n\t"
" int $0x80 \n\t"
" popa \n\t"
" ret \n\t"
);
void _start()
{
#define w(x) write(1, x, sizeof(x));
w("hello\n");
w("bye\n");
}
इसके अलावा naked
x86 function attributes सूची में शामिल किया गया है, इसलिए मैं इसे नए जीसीसी के लिए काम करता है लगता है।
- 1. जावा समर्थन और ऑटोबॉक्सिंग का समर्थन क्यों नहीं करता है?
- 2. हास्केल का डेटा क्यों नहीं है। समर्थन अनंत सेट का समर्थन करता है?
- 3. Azure वेबसाइटों के लिए नग्न डोमेन समर्थन
- 4. auto_ptr का समर्थन क्यों नहीं करता है -> *()
- 5. XmlSerializer शब्दकोश का समर्थन क्यों नहीं करता है?
- 6. मेरा आईई 9 कैनवास का समर्थन क्यों नहीं करता है?
- 7. क्यों std :: queue स्पष्ट() फ़ंक्शन का समर्थन नहीं करता है?
- 8. जावा सूची इंटरफ़ेस getLast() का समर्थन क्यों नहीं करता है?
- 9. एंटिटी फ्रेमवर्क ओडीबीसी का समर्थन क्यों नहीं करता है?
- 10. `getattr` लगातार गुण पुनर्प्राप्ति का समर्थन क्यों नहीं करता है?
- 11. एफ # नेस्टेड कक्षाओं का समर्थन क्यों नहीं करता है?
- 12. आईआईएस क्यों चंक ट्रांसफर एन्कोडिंग का समर्थन नहीं करता है?
- 13. एसक्यूएल सर्वर सीई वर्चर्स का समर्थन क्यों नहीं करता है?
- 14. पर्यवेक्षण चयन क्यों बड़े बदलावों का समर्थन नहीं करता है?
- 15. xcode4 पर्सफोर्स का समर्थन नहीं करता है?
- 16. विम यूनिकोड का समर्थन नहीं करता है?
- 17. क्या जीसीसी लंबे समय तक int का समर्थन करता है?
- 18. लॉगबैक समर्थन log4j appenders समर्थन करता है?
- 19. jQuery इवेंट मॉडल इवेंट कैप्चर का समर्थन क्यों नहीं करता है और केवल इवेंट बबलिंग का समर्थन करता है
- 20. (वस्तु #inspect का समर्थन नहीं करता)
- 21. LINQ आह्वान का समर्थन नहीं करता
- 22. क्या cocos2d एआरसी का समर्थन करता है?
- 23. क्या tryhaskell.org समर्थन परिभाषाओं का समर्थन करता है?
- 24. क्या जीसीसी समर्थन कमांड फाइल
- 25. क्या स्कैला समर्थन पूंछ रिकर्सन ऑप्टिमाइज़ेशन का समर्थन करता है?
- 26. जेपीए इंटरफेस का समर्थन नहीं करता .. प्रभाव?
- 27. जावा varargs समर्थन संग्रह क्यों नहीं करता है?
- 28. mxml समर्थन घटक कन्स्ट्रक्टर क्यों नहीं करता है?
- 29. wsHttp समर्थन स्ट्रीमिंग क्यों नहीं है?
- 30. क्या जीसीसी समर्थन सी ++ एएमपी
जीसीसी का कौन सा संस्करण? –
यह वीसी की एक विशेष विशेषता प्रतीत होता है: http://msdn.microsoft.com/en-us/library/21d5kd3a(v=vs.80).aspx – JohnTortugo