#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;
}