大家好,我做了一個指令序列的圖表,以及它如何被解碼爲操作。我還展示了它們之間的數據依賴關係如何創建關鍵操作路徑。我唯一的問題是,如果我正確地做了這個,我也很困惑如何找到%rbx。請問我可能對我的圖表有什麼問題,現在這是一個粗略的草案。感謝您的時間。將指令序列轉化爲圖表
.L15: # loop:
vmovsd 0(%rbp,%rcx,8), %xmm1
vmulsd (%rax,%rcx,8), %xmm1, %xmm1
vaddsd %xmm1, %xmm0, %xmm0
addq $1, %rcx
cmpq %rbx, %rcx
jl .L15 # If <, goto loop
是不是應該從左邊的'Load'到頂部'%xmm1'的箭頭? – Jester
應該只有一個負載? – Luke12
@ Luke12:代碼有兩條帶有內存源操作數的指令,所以有兩個加載。另外,你應該區分FP'addsd'和'mulsd'的整數'add'。小丑的右邊,xmm0和xmm1應該來自負載。順便說一下,IACA可以爲你生成這樣的圖表。 (https://software.intel.com/en-us/articles/intel-architecture-code-analyzer,英特爾的免費軟件,適用於Linux) –