如果是某一種機器碼,那應該只能用在某一種類型的的cpu上,但是現實是不管是AMD還是intel的都可以運行。而AMD和Intel的cpu指令集是不一樣的。那為什麼還能運行同一次編譯出來的軟件?
amd和intel擁有一個共同的指令集,但是在此之上,intel和 amd,以及intel自己各代處理器,都有自己的不同的指令。
比如說Intel Pentium 4有SSE2,但是沒有SSE 4,AMD Athlon 64有3d now!,而所有的Intel處理器都沒有。
如果你的程序調用了不支持的指令,就會導致程序崩潰。但是一般C編譯器編譯的代碼不會,因為它們會添加額外的代碼判斷運行的處理器是否支持所用的指令,如果不支持會用別的指令代替,或者給出溫和的錯誤提示。