将这个ARM64程序集转换为Python吗?

问题描述 投票:-1回答:1

假设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到底是什么

python assembly arm64
1个回答
0
投票

ADD X9,X6,#8

我知道这是X9 = A + 8,不确定数组的值在这里是什么

正确。正如问题描述所指出的,X6的值只是数组的基地址。

STUR X1,[X6,#0]

我相信这会将X1的值“存储”到A [0]?

正确。在问题描述中,X1已定义为变量G。所以是A[0] = G;

LDUR X8,[X10,#0]

这将值“存储”到?X10 [0]?进入X8?

是正确的,但是将数据从内存移入寄存器的过程称为负载。因此,指令名称(LD =负载)。还请记住,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];

© www.soinside.com 2019 - 2024. All rights reserved.