此項包括在 SPARC V9 ABI 中的機制可以提供整體註冊的使用檢查,如此這些整體註冊的使用才會更可靠。
這項機制在 SPARC V9 ABI 中有說明。總而言之,ELF 註冊用法記錄已上市。您必須要有遵從 V9 ABI 規定的程式才能利用這些記錄來報告整體註冊用法。在連結期間,不管是靜態或動態的,記錄都會受到比較以確保不同的可連結物件之間的整體註冊之一致性用法。如果偵測到不一致的用法,連結作業會產生錯誤的訊息。
如果要執行這項機制,編譯器一定要輸出 ELF 註冊記錄。這項輸出動作目前可以在編譯 v9 時,利用新增-Wc、C 的 -Qiselect-regsym=1選項,或 C++ 的-Qoption cg -Qiselect-regsym=1選項至編譯器來達成。附加在 Solaris 2.5.1、Solaris 2.6 和 Solaris 7 的連結程式可以接受 ELF 註冊記錄。附加在舊版的 Solaris 的連結程式則不接受新的 ELF 註冊記錄,並且會發出錯誤的訊息。
因為 SPARC 組合程式可能也會產生可連結的物件,所以 SPARC 組合程式也必須要能夠輸出 ELF 註冊記錄。組合程式需要知道您打算如何利用參考自每個輸入.s檔案內的整體註冊。如果要這樣做的話,您一定要有新的組合程式虛擬 op,才能提供這項功能。
因為編譯器也可以輸出組合語言,例如含-S選項,而且組合語言可以在稍後再由組合程式組合,所以編譯器可以輸出新的虛擬 ops 來提供適當的整體註冊用法文件是很重要的。
新的 SPARC V9 虛擬指示:
.register%g {2 | 3 | 6 | 7}, {#scratch | symbol name}
SPARC 組合程式接受任何架構設定的新虛擬。新的虛擬只對 V9 有影響。這樣做可以讓您使用新的自然組合虛擬 ops 來寫 V8 和 V9 的組合碼。SPARC 架構 2.5.1 和 2.6 版上的 V8 接受 op,但是不予處理。
在-xarch=v9下,如果 SPARC 組合程式偵測到新虛擬 op 不涵蓋的整體註冊用法,那麼,SPARC 組合程式就會顯示一個錯誤訊息。
在-xarch=v9下,如果 SPARC 組合程式偵測到數個和相同的整體註冊有關的不同虛擬 op,那麼,SPARC 組合程式就會發出錯誤的訊息。否則,SPARC 組合程式就會列出使用者所識別的 ELF 註冊記錄。SPARC 組合程式可能會驗證此特定用法的說明是正確的,但是這樣做並不是必要的。