匯流排錯誤 Bus error

2021-08-20 16:43:34 字數 544 閱讀 5999

在編制一和執行乙個程式的時候, 人們可能會遇到下面的資訊:"bus error(core dumped);. 當出現這種資訊的時候,則表示在sparc等risc型別的cpu中發生了"違反定位訪問"的情況.例如,讀者可以閱讀下面的程式.

#include #include void main()

在這段程式中,能夠確保256byte的儲存器區域,其中能夠儲存68000的整數值.但是,這樣也會發生前面所講的位址問題.在上述的情況下,陣列buf的儲存區域從4的整數倍開始.在該陣列的第二個位置(即奇數字址單元)中賦予了資料型別為int的值.在risc型別的cpu中,資料型別int值只能儲存在4的整數倍位址中.因此,在將要對變數x賦值68000的時候,cpu不能夠繼續執行這個程式,則出現bus error這個資訊,然後終止該程式的執行.

但是,在pentinm(奔騰)系列的cpu中,則不會產生bus error這個資訊.這是因為採用了pentinm系列的80386的流程的risc型別的cpu,提高了cpu的處理效率,或電路進行了簡單化處理,從8位開始就使用了重視移植性的體系結構.

異或 ,匯流排錯誤bus error

兩個數交換,你想到怎麼寫呢,應用層的人大概只聽說過利用另乙個變數進行暫存值,還有哪些方法呢?作為底層學習人員我想你必須知道利用數的位操作,a b b a a b 貌似異或有個直接的什麼電路,幾部電路就達到了 目得 書上還寫了如果兩個相等 則它們兩個的值均為0 我百思不能其解,用筆算也是交換啊,怎麼會...

使用mmap遇到匯流排錯誤bus error

先簡單描繪一下錯誤發生的場景 define mmap buff size 4096 struct message int fd open test o rdwr o creat lseek fd,mmap buff size,seek set message m null m message mma...

linux mmap 匯流排錯誤

用mmap對映兩個檔案,然後把乙個檔案的內容複製到另乙個檔案 採用的是memcpy函式 但是使用這個函式出現了匯流排錯誤 我把兩個對映的位址和長度都輸出來了 請高手給分析一下。輸出結果 file size 18 src 0xb7fa9000 dst 0xb7fa8000 匯流排錯誤 include ...