एक recent question से प्रेरित होकर, मैं विधानसभा इनलाइन का सहारा या बिना किसी को भी जानता है gcc
पाने के लिए लिनक्स x86-64 प्लेटफार्मों पर, x86-64 bts
अनुदेश (बिट परीक्षण और सेट) उत्पन्न को जानना चाहते हैं गैर मानक कंपाइलर intrinsics के लिए।मानक सी से x86-64 के लिए 'बीटीएस' निर्देश उत्पन्न करने के लिए `gcc` कैसे प्राप्त करें?
संबंधित प्रश्न:
Why doesn't gcc do this for a simple
|=
operation were the right-hand side has exactly 1 bit set?How to get
bts
using compiler intrinsics or theasm
directive
पोर्टेबिलिटी bts
से मेरे लिए ज्यादा महत्वपूर्ण है, इसलिए मैं का उपयोग करेगा नहीं और asm
निर्देश है, और हो, तो एक और समाधान, मैं कंपाइलर instrinsics का उपयोग नहीं करना पसंद करते हैं।
संपादित: सी स्रोत भाषा परमाणु संचालन का समर्थन नहीं करता, तो मैं विशेष रूप से परमाणु परीक्षण और सेट (हो रही है, भले ही उस के लिए मूल कारण में कोई दिलचस्पी नहीं है अस्तित्व के लिए परीक्षण और सेट पहली जगह में)। अगर मुझे कुछ परमाणु चाहिए तो मुझे पता है कि मुझे मानक सी स्रोत के साथ ऐसा करने का कोई मौका नहीं है: इसे एक आंतरिक, लाइब्रेरी फ़ंक्शन या इनलाइन असेंबली होना चाहिए। (मैंने कई धागे का समर्थन करने वाले कंपाइलर्स में परमाणु संचालन लागू किए हैं।)
हम्म, अच्छा सवाल। मैं एआरएम + नीयन पर वेक्टर बिट-टेस्ट के लिए 'vtst_ *' देखता हूं, लेकिन कुछ भी सामान्य नहीं ... – ephemient
यदि बीटीएस वास्तव में तेज़ है, तो एक बग रिपोर्ट भेजें। मुझे यकीन है कि जीसीसी प्रोग्रामर पहले ही बीटीएस के अस्तित्व के बारे में जानते हैं। आखिरकार, एक कंपाइलर को 1: 1 मैप करना नहीं चाहिए। – jbcreix
बेहतर अभी भी, टेस्टकेस के साथ बीटीएस का उपयोग करने के लिए एक पैच भेजें जिसे साबित करने के लिए प्रोफाइल किया जा सकता है कि अनुकूलन सार्थक है। –