[英]Converting this ARM64 Assembly into Python?
假設 X6 是數組“A”的基地址
假設 X7 是數組“B”的基地址
F,G,H,I = X0,X1,X2,X3,X4
這個 AArch64 程序集到底在做什么?
使用上述變量的 python 代碼表示將是驚人的:)
ADD X9, X6, #8 // I understand this is X9 = A + 8, not sure what the value of the array would be here
ADD X10, X7, #16 // Same idea
STUR X1, [X6, #0] // I believe this "Stores" the value at X1 into A[0]?
LDUR X8, [X10,#0] // This "stores" the value at ?X10[0]? into X8?
LDUR X5, [X9, #0] // This "stores" the value at ?X9[0]? into X5?
ADD X0, X8, X5 // F = X8 + X5
我在 LDUR 階段迷路了,X5 和 X8 到底是什么
添加 X9、X6、#8
我知道這是 X9 = A + 8,不確定數組的值是什么
正確的。 正如問題描述所說, X6
的值只是數組的基地址。
斯圖爾 X1,[X6,#0]
我相信這會將 X1 的值“存儲”到 A[0] 中?
正確的。 X1
在問題描述中被定義為變量G
這就是A[0] = G;
LDUR X8, [X10,#0]
這將值“存儲”在?X10[0]? 進入X8?
正確,但是將數據從 memory 移動到寄存器中稱為加載。 因此指令名稱(LD = load)。 還要記住X10
已設置為X7+16
,其中X7
是數組B
。 此外, LDUR
使用字節索引,因此 16 表示 16 個字節。 假設B
是一個包含 64 位數字的數組,每個項目 8 個字節,所以 16 個字節是 2 個項目。 所有這些歸結為X8 = B[2];
.
LDUR X5,[X9,#0]
同樣的邏輯,這是X5 = A[1];
所以最終的結果是F = B[2] + A[1];
.
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.