回 帖 发 新 帖 刷新版面

主题:问题,谁能讲讲什么意思?

代码的一部分。请分析一下,我是新手看不懂。还有%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

回复列表 (共3个回复)

沙发

你这个好像是linux下面的汇编语言的格式,和8086上面的有很大的不同.

自己找本书看看吧.


不少寄存器前面都需要加 % 来着.

叫什么AT什么来着吧?

你最近实在玩kernel吧?

板凳

顶 不懂

3 楼


是linux下的

gcc中assmbly

找本书看看吧

谢谢

我来回复

您尚未登录,请登录后再回复。点此登录或注册