[問題] C 語言的 Bit fields

作者: xvid (DivX)   2016-07-19 09:26:09
關於 C 的 Bit fields 有一個段落不太瞭解,想請教各位一下
在 Cppreference 網頁中提到
http://en.cppreference.com/w/c/language/bit_field
The following properties of bit fields are implementation-defined:
‧...(省略)...
‧Whether a bit field can straddle an allocation unit boundary
請問上文中提到 "straddle" 與 "allocation unit boundary"是什麼意思?
感謝!
作者: MOONRAKER (㊣牛鶴鰻毛人)   2016-07-19 10:40:00
straddle就是坐在牆壁上,兩腿跨在兩邊。allocation unit boundary是記憶體配置(allocation)最小單位(unit)的邊界(boundary) 你是不是沒有字典簡而言之這個單位在32-bit系統上是4 bytes而某個field如果跨4 bytes的邊界 例如剛好在bit 28-35那要不要給他跨 還是讓他擠到下一個4 bytes去整包就會多出4 bytes 要看compiler怎麼做 標準不規定
作者: xvid (DivX)   2016-07-19 12:54:00
有查字典,只是全拼在一起就看不懂了。謝謝解答!
作者: MOONRAKER (㊣牛鶴鰻毛人)   2016-07-19 15:35:00
組語或計算機組織應該都會提到這個最小單位 可以留意
作者: chuegou (chuegou)   2016-07-19 19:09:00
記憶體對齊
作者: MOONRAKER (㊣牛鶴鰻毛人)   2016-07-20 18:13:00
寫錯了 這個狀況應該不管怎麼樣也會多出4 bytes只是他要使用bits 28-35 或者推到32-39 28-31讓他空著則由compiler來決定
作者: xvid (DivX)   2016-07-20 20:45:00
我也沒注意到4bytes的部份XD 不過可以理解的意思

Links booklink

Contact Us: admin [ a t ] ucptt.com