iT邦幫忙

2023 iThome 鐵人賽

DAY 16
0
自我挑戰組

C again系列 第 16

VALUE

  • 分享至 

  • xImage
  •  

稍微理解一下 VALUE,參考 https://docs.ruby-lang.org/en/3.2/extension_rdoc.html

The type for the Ruby object. Actual structures are defined in ruby.h, such as struct RString, etc. To refer the values in structures, use casting macros like RSTRING(obj).

所以前面看到 type cast 成 VALUE 的 C object 都是視為 Ruby object 處理。依照 memory alignment 最小單位是 word (根據系統架構是 32bit or 64bit) 的特性,address 的最後兩個 bit 會是 00

所以一般 pointer cast 成 VALUE 時沒有問題,指向的 C object 對應到 Ruby object。如果最後兩個 bit 不是 00 的話,表示這個值有其他用途,在 YARV 實作表示此 VALUE 為 word - 1bit 的整數。


上一篇
load_file_internal
下一篇
VALUE (2)
系列文
C again30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言