主题:问题,谁能讲讲什么意思?
代码的一部分。请分析一下,我是新手看不懂。还有%0中“%”是什么意思呀?
这个应该是算加法的。如何理解亚。请指点
__asm__ __volatile__(
"mov %0, %%esi\n\t"
"MOV %1, %%edi\n\t" // Destination address (value[i])
"MOV $8, %%ecx\n\t" // number of iterations: @@@BIG_INTEGER_MAX_WORDS@@@
"XOR %%edx,%%edx\n\t" // start with index 0 AND clear carry!
"addition_loop:\n\t"
"MOVL (%%esi, %%edx,4), %%eax\n\t" // EAX = addend.value[i]
"ADCL (%%edi, %%edx,4), %%eax\n\t" // EAX += value[i] + carry
"MOVL %%eax, (%%edi,%%edx,4)\n\t"// value[i] = EAX
"INC %%edx\n\t"
"LOOP addition_loop\n\t" // decrement ECX and LOOP
: // output variables
: "a"(&addend), "c"(this) // input variables
: "%esi", "%edi", "%edx", "memory" // clobber stuff
这个应该是算加法的。如何理解亚。请指点
__asm__ __volatile__(
"mov %0, %%esi\n\t"
"MOV %1, %%edi\n\t" // Destination address (value[i])
"MOV $8, %%ecx\n\t" // number of iterations: @@@BIG_INTEGER_MAX_WORDS@@@
"XOR %%edx,%%edx\n\t" // start with index 0 AND clear carry!
"addition_loop:\n\t"
"MOVL (%%esi, %%edx,4), %%eax\n\t" // EAX = addend.value[i]
"ADCL (%%edi, %%edx,4), %%eax\n\t" // EAX += value[i] + carry
"MOVL %%eax, (%%edi,%%edx,4)\n\t"// value[i] = EAX
"INC %%edx\n\t"
"LOOP addition_loop\n\t" // decrement ECX and LOOP
: // output variables
: "a"(&addend), "c"(this) // input variables
: "%esi", "%edi", "%edx", "memory" // clobber stuff