繁体   English   中英

在汇编中声明可变大小的数组

[英]Declaring variable-sized arrays in assembly

我正在编写一个汇编程序,希望能够执行以下(基本)操作:

x = 100;
y = int[x]

例如,y的大小取决于x的值。

注意:我在64位Ubuntu系统上使用NASM指令集。

在汇编中,我知道需要在文件的数据部分声明数组的大小,例如

myvariable resq 1000

问题是在完成之前的计算之前,我不知道要制作多大的尺寸。 我真正想要的是这样的:

mov rax, 100
myvariable resq rax

但这是不允许的吗? 只是对汇编中的数组访问/声明有些困惑。

任何指针表示赞赏!

仅当您在堆栈上声明数组或使用malloc或类似方法从堆中拉出内存时,C示例才可行。 对于较小的值,使用堆栈非常好(并且更快):

mov rax, 100   # 100 elemtents
shl rax, 3     # muliply with 8, the size of an element
sub rsp, rax   # rsp points now to your array

# do something with the array
mov rbx, [rsp]    # load array[0] to rbx
mov [rsp+8], rbx  # store to array[1]

add rsp, rax   # rsp point to the return address again

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM