2008年12月27日 星期六

什麼鬼!!!

大大說: 看看assambly,會不會是被optimize掉了

發現一個怪情況,先記下來
kernel跟我越來越不熟了......
就這麼簡單的code....怎麼會產生這樣的輸出????


for(x=0;x<=96;x+=4) printk("0x12345678>>%d=%.8x\n",x,0x12345678>>x);
[ 1321.300269] 0x12345678>>0=12345678
[ 1321.300271] 0x12345678>>4=01234567
[ 1321.300272] 0x12345678>>8=00123456
[ 1321.300274] 0x12345678>>12=00012345
[ 1321.300278] 0x12345678>>16=00001234
[ 1321.300280] 0x12345678>>20=00000123
[ 1321.300281] 0x12345678>>24=00000012
[ 1321.300283] 0x12345678>>28=00000001
[ 1321.300285] 0x12345678>>32=12345678
[ 1321.300289] 0x12345678>>36=01234567
[ 1321.300291] 0x12345678>>40=00123456
[ 1321.300292] 0x12345678>>44=00012345
[ 1321.300294] 0x12345678>>48=00001234
[ 1321.300295] 0x12345678>>52=00000123
[ 1321.300297] 0x12345678>>56=00000012
[ 1321.300299] 0x12345678>>60=00000001
[ 1321.300301] 0x12345678>>64=12345678
[ 1321.300302] 0x12345678>>68=01234567
[ 1321.300303] 0x12345678>>72=00123456
[ 1321.300306] 0x12345678>>76=00012345
[ 1321.300307] 0x12345678>>80=00001234
[ 1321.300309] 0x12345678>>84=00000123
[ 1321.300310] 0x12345678>>88=00000012
[ 1321.300312] 0x12345678>>92=00000001
[ 1321.300314] 0x12345678>>96=12345678


還沒完....
for(x=0;x<=96;x+=4) printk("0x12345678>>%d=%.8x\n",x,0x12345678ULL>>x);
[ 1952.643777] 0x12345678>>0=12345678
[ 1952.643778] 0x12345678>>4=01234567
[ 1952.643779] 0x12345678>>8=00123456
[ 1952.643780] 0x12345678>>12=00012345
[ 1952.643781] 0x12345678>>16=00001234
[ 1952.643783] 0x12345678>>20=00000123
[ 1952.643784] 0x12345678>>24=00000012
[ 1952.643785] 0x12345678>>28=00000001
[ 1952.643786] 0x12345678>>32=00000000
[ 1952.643787] 0x12345678>>36=00000000
[ 1952.643788] 0x12345678>>40=00000000
[ 1952.643792] 0x12345678>>44=00000000
[ 1952.643793] 0x12345678>>48=00000000
[ 1952.643794] 0x12345678>>52=00000000
[ 1952.643795] 0x12345678>>56=00000000
[ 1952.643796] 0x12345678>>60=00000000
[ 1952.643798] 0x12345678>>64=12345678
[ 1952.643802] 0x12345678>>68=01234567
[ 1952.643803] 0x12345678>>72=00123456
[ 1952.643804] 0x12345678>>76=00012345
[ 1952.643805] 0x12345678>>80=00001234
[ 1952.643806] 0x12345678>>84=00000123
[ 1952.643808] 0x12345678>>88=00000012
[ 1952.643811] 0x12345678>>92=00000001
[ 1952.643813] 0x12345678>>96=00000000

沒有留言: