AT&T asm之Qt使用

#include <stdio.h>函數

#include <string.h>spa

/*string

函數名: att_asm_p();io

功能:相似於Intel彙編功能:mov ebx, [OSTCBCur]asm

                        mov esp, [ebx]class

返回值變量

傳入值gc

*/im

void att_asm_p(void)語言

{

    int b = 11;

    int d = 599;

    int *p = &d;

    asm("movl %0, %%ecx \n\t"::"r"(p));

    asm("movl   (%ecx),%eax \n\t");

    asm("movl   %%eax,%0 \n\t":"=r"(b));

    printf("b: %d\n", b);

}

 

/*

函數名: att_asm_mov();

功能:相似於Intel彙編功能:mov

說明:  "movl %1, %%esi \n\t"  //%1對應第二齣現的c語言變量(__in1)

        "movl %2, %%edi \n\t" //%2對應第三齣現的c變量(__in2)

        "movl %%edi, %0 \n\t"  //%0對應第一齣現的C變量(__out)

        : "=a"(__out)

        : "r" (__in1), "r" (__in2));

返回值

傳入值

*/

void att_asm_mov()

{

    int __out = 1, __in1 = 2, __in2 = 3;

    __asm__ (

        "movl %1, %%esi \n\t"

        "movl %2, %%edi \n\t"

        "movl %%edi, %0 \n\t"

        : "=a"(__out)

        : "r" (__in1), "r" (__in2));

 

    printf("cr0: %d\n", __out);

}

int main(int argc, char *argv[])

{

    att_asm_p();

    att_asm_mov();

    return 0;

}

相關文章
相關標籤/搜索