इस चर घोषणा पर विचार करें:यूनियन कानूनी के माध्यम से __m128 वैरिएबल के बाइट्स तक पहुंच रहा है?
union {
struct {
float x, y, z, padding;
} components;
__m128 sse;
} _data;
मेरा विचार, x
, y
, z
क्षेत्रों के माध्यम से मूल्य निर्दिष्ट SSE2 संगणना प्रदर्शन और x
, y
, z
के माध्यम से परिणाम को पढ़ने के लिए है। मुझे थोड़ा सा संदेह है कि यह कानूनी है या नहीं। मेरी चिंता संरेखण है: एमएसडीएन का कहना है कि __m128
चर स्वचालित रूप से 16 बाइट सीमा से गठबंधन होते हैं, और मुझे आश्चर्य है कि मेरा संघ इस व्यवहार को तोड़ सकता है या नहीं। क्या यहां पर विचार करने के लिए कोई अन्य समस्या है?
नहीं, संरेखण कोई मुद्दा नहीं है। संघ के सभी सदस्यों के लिए सही तरीके से काम करने के लिए जो भी संरेखण आवश्यक होगा। –
यह भी ध्यान दें कि, कम से कम विजुअल स्टूडियो पर, आप 's__.1212_f32 [0]', 'sse.m128_f32 [1]', 'sse.m128_f32 [2]', 'sse.m128_f32 [2]' के साथ '__m128 sse; के घटक प्राप्त कर सकते हैं। 'sse.m128_f32 [3] ', इसलिए इस चाल की कोई आवश्यकता नहीं है। –
@ आर। मार्टिनिन्हो फर्नांडीस और जीसीसी के लिए? –