मैंने अभी इस कार्य को असाइनमेंट में सौंप दिया है। यह किया जाता है (इसलिए कोई होमवर्क टैग नहीं)। लेकिन मैं देखना चाहता हूं कि यह कैसे सुधार किया जा सकता है।एक साधारण असेंबली फ़ंक्शन को सुधारने में सहायता
अनिवार्य रूप से, समारोह 1 के बीच सभी पूर्णांकों और दिए गए नंबर के वर्गों का योग, निम्न सूत्र का उपयोग कर:
n(n+1)(2n+1)/6
कहाँ n
अधिकतम संख्या है।
नीचे दिया गया कार्य किसी भी अतिप्रवाह को पकड़ने के लिए बनाया गया है और 0 को किसी भी घटना को वापस करना चाहिए।
UInt32 sumSquares(const UInt32 number)
{
int result = 0;
__asm
{
mov eax, number //move number in eax
mov edx, 2 //move 2 in edx
mul edx //multiply (2n)
jo end //jump to end if overflow
add eax, 1 //addition (2n+1)
jo end //jump to end if overflow
mov ecx, eax //move (2n+1) in ecx
mov ebx, number //move number in ebx
add ebx, 1 //addition (n+1)
jo end //jump to end if overflow
mov eax, number //move number in eax for multiplication
mul ebx //multiply n(n+1)
jo end //jump to end if overflow
mul ecx //multiply n(n+1)(2n+1)
jo end //jump to end if overflow
mov ebx, 6 //move 6 in ebx
div ebx //divide by 6, the result will be in eax
mov result, eax //move eax in result
end:
}
return result;
}
असल में, मैं पता है कि मैं वहाँ में सुधार कर सकते हैं चाहता हूँ। अधिकतर सर्वोत्तम प्रथाओं के संदर्भ में। एक बात स्पष्ट दिखाई देती है: स्मार्ट ओवरफ्लो चेक (जो भी अधिकतम इनपुट के लिए एक चेक के साथ एक ओवरफ्लो का कारण बनता है)।
CodeReview अभी तक बीटा से बाहर नहीं है, लेकिन यह एक अच्छा उम्मीदवार हो सकता है एक बार यह है। –