December 17, 2005

AMD64 的復活節彩蛋

剛剛閱讀 Dave Jones 的 blog [cpu easter eggs],得知 AMD64 在 cpuid 這個 instruction 有相當有趣的表現:
    inline void cpuid(
        unsigned int op,
        unsigned int *eax,
        unsigned int *ebx,
        unsigned int *ecx,
        unsigned int *edx)
    {
        __asm__("cpuid"
        : "=a" (*eax), "=b" (*ebx), "=c" (*ecx), "=d" (*edx)
        : "a" (op)
        : "cc");
    }
    
    int main(void)
    {
        unsigned int eax,ebx,ecx,edx;
        unsigned int i=0;
        char array[17];
        char *cp=array;
    
        cpuid(0x8fffffff, &eax,&ebx,&ecx,&edx);
    
        for (i = 0; i < 4; i++)
            *cp++ = eax >> (8 * i);
        for (i = 0; i < 4; i++)
            *cp++ = ebx >> (8 * i);
        for (i = 0; i < 4; i++)
            *cp++ = ecx >> (8 * i);
        for (i = 0; i < 4; i++)
            *cp++ = edx >> (8 * i);
        *cp = 0;
    
        printf ("%s\n", array);
    }
    
在 AMD64 編譯以上程式並執行後,會得到這個輸出:
    IT'S HAMMER TIME
Cool !
由 jserv 發表於 December 17, 2005 07:04 PM
迴響

原來 CPU 也會有彩蛋 @@"

風痕影 發表於 July 9, 2007 02:36 AM
發表迴響









記住我的資訊?