| #define _set_tssldt_desc(n,addr,type) __asm__ ("movw $104,%1 " "movw %%ax,%2 " "rorl $16,%%eax " "movb %%al,%3 " "movb $" type ",%4 " //这里用了$" type ",后面用了"0x89"," type "在这里为何要加上双引号?另外type的前面为何加了“$”?AT&T汇编立即数前面才加"$"的啊,为何? "movb $0x00,%5 " "movb %%ah,%6 " "rorl $16,%%eax" ::"a" (addr), "m" (*(n)), "m" (*(n+2)), "m" (*(n+4)), "m" (*(n+5)), "m" (*(n+6)), "m" (*(n+7)) ) #define set_tss_desc(n,addr) _set_tssldt_desc(((char *) (n)),addr,"0x89") //这里的"0x89"又为何要加上双引号呢? #define set_ldt_desc(n,addr) _set_tssldt_desc(((char *) (n)),addr,"0x82") |