Вы уверены, что знаете, что вам действительно нужно? Вы запросили код, который будет хранить значение регистра в памяти, выделенной malloc
(«указатель указывается указателем»), то есть местоположением *(int*) storage
, но вы приняли ответ, который хранит (или, по крайней мере, пытается сохранить) значение в самом указателе, что совершенно другое.
Чтобы сохранить eax
в памяти, "на которую указывает указатель", т. Е. В *(int*) storage
, как вы и просили, вам нужно будет сделать что-то подобное
mov edi, dword ptr storage
mov dword ptr [edi], eax
(Я использую синтаксис «Intel» справа налево для инструкций по сборке, т.е. mov
копирует из правого операнда в левый операнд. Я не знаю, какой синтаксис - справа налево или слева направо верно - ваш компилятор использует.)
Обратите внимание, что в mov edi, dword ptr storage
часть dword ptr
является полностью необязательной и не имеет никакого значения.