簡體   English   中英

將此 ARM64 程序集轉換為 Python?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM