利用 RDTSC 量測時脈週期
在進行程式的時間測量時,可以透過 rdtsc 指令取得時脈週期。 rdtsc 會返回 CPU 啟動之後所經歷的時脈週期數量,因此我們可以透過該指令在兩個區段相減過後的值來計算一段時間,例如量測執行一段程式碼所花費的時間。
在 CPU 啟動之後,會自動累積週期數,並且會將值紀錄在 EDX 和 EAX 暫存器, <mark>EDX 為高位元, EAX 為低位元</mark>。
EDX 和 EAX 暫存器
暫存器分為 32 位元以及 64 位元暫存器。RDX 和 RAX 皆為 64 位元暫存器,對應的 EDX 與 EAX 則為 32 位元暫存器。32 位元和 64 位元暫存器並不是獨立的暫存器,以 RAX 與 EAX 為例, EAX 佔了 RAX 的低位 32 位元,因此對 EAX 暫存器修改時也會影響到 RAX 暫存器。
image
參考資料:Day6 - 為什麼要使用暫存器?