как поместить диапазон памяти в стек в asm? - PullRequest
0 голосов
/ 13 февраля 2012

Есть ли возможность поместить диапазон памяти в стек?

С помощью foo resd x я могу зарезервировать x двойных слов, адреса которых являются последовательными.

Есть ли возможность отправить все двойные слова с адреса foo на адрес foo+(4*x) в стек?

Ответы [ 2 ]

3 голосов
/ 13 февраля 2012

Это зависит от процессора, а вы не указали его (я предполагаю, что это x86, потому что resd - это способ nasm резервировать память, а nasm - только x86).

Нет инструкции x86, которая может помещать в стек произвольное число (d/q)words. Вы можете нажать несколько из них по одному в цикле. Или вы можете зарезервировать место в стеке (вычитая из (e/r)sp), а затем скопировать данные, используя mov или rep movsb/w/d/q.

0 голосов
/ 13 февраля 2012

Это не может быть сделано ассемблером во время компиляции. Стековые операции должны выполняться кодом во время выполнения.

...