2016-02-14 69 views

回答

2

這只是間接跳過表格。正如你所希望的那樣,.L4(,%rdx,8)是一個內存地址,其值爲.L4 + rdx * 8。在64位模式下,指針是8個字節,因此是比例因子。 rdx只是表中條目的索引。

*沒有任何區別,除了:)你應該使用間接跳轉一個*沉默彙編警告,但是當彙編能弄清楚,它只是給一個警告。 (,%rdx,8)是一個不爭的事實,這是一個間接的跳躍。如果您有jmp *.L4,則需要*將其與jmp .L4區分開來。前者是通過.L4處的指針間接跳轉,而後者則是直接跳轉到.L4

+0

感謝您的回答。我現在的問題是你如何計算.L4 + rdx * 8?我很困惑,因爲.L4是一個標籤,添加標籤是如何工作的?我還應該補充說明.L4保留的是一些(.quad.L2)指令(L2-L7)。我如何知道間接跳轉的標籤? – skob002

+0

正如我所說,'rdx'是索引。如果您知道'rdx'中的值,您只需知道它將使用哪個標籤。如果'rdx'是'0',它會轉到第一個標籤,如果它是'5',它將轉到第六個標籤等。 – Jester

+0

@ skob002:所有標籤都有一個地址。 –