तो मेरे पास निम्नलिखित असेंबली भाषा कोड है जिसे मुझे सी में परिवर्तित करने की आवश्यकता है। मैं कोड की कुछ पंक्तियों पर उलझन में हूं।विधानसभा भाषा सी
मैं समझता हूं कि यह for
लूप है। मैंने प्रत्येक पंक्ति पर अपनी टिप्पणियां जोड़ दी हैं।
मुझे लगता है कि for
पाश इस
for (int i = 1; i > 0; i << what?) {
//Calculate result
}
क्या परीक्षण शर्त है की तरह हो जाता है? और मैं इसे कैसे बदलूं?
असेंबली कोड को देखते हुए, चर 'एन' क्या करता है?
यह है, तो प्रारूप movl = स्रोत है इंटेल x86 है डेस्ट
movl 8(%ebp), %esi //Get x
movl 12(%ebp), %ebx //Get n
movl $-1, %edi //This should be result
movl $1, %edx //The i of the loop
.L2:
movl %edx, %eax
andl %esi, %eax
xorl %eax, %edi //result = result^(i & x)
movl %ebx, %ecx //Why do we do this? As we never use $%ebx or %ecx again
sall %cl, %edx //Where did %cl come from?
testl %edx, %edx //Tests if i != what? - condition of the for loop
jne .L2 //Loop again
movl %edi, %eax //Otherwise return result.
testl% edx,% edx चेक करता है अगर edx 0 है और फिर शून्य - शून्य नहीं है तो शून्य। –
आप किन लाइनों को भ्रमित कर रहे हैं? सी में, लूप के लिए एक है (;;) {} –
आप लीगेसी एएसएम को सी में परिवर्तित क्यों कर रहे हैं? –