簡體   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