Получить значение из памяти

Тема в разделе "WASM.BEGINNERS", создана пользователем skales007, 8 авг 2018.

  1. skales007

    skales007 Member

    Публикаций:
    0
    Регистрация:
    9 янв 2018
    Сообщения:
    37
    Что-то никак не могу понять в чем ошибка.
    Код (ASM):
    1. VirtualAlloc ...........
    2. mov Buffer, eax
    3. mov eax, dword ptr [buffer] ;в ЕАХ попадает адрес на буфер
    4. ;mov eax, buffer
    5. ;mov eax, dword ptr [eax] ; а в данном случае в ЕАХ - как раз значение из буфера
    6.  
    Казалось бы одно и тоже, но в коде приходится извращаться именно вторым способом чтобы получить значение. Что я делаю не так?
     
  2. f13nd

    f13nd Well-Known Member

    Публикаций:
    0
    Регистрация:
    22 июн 2009
    Сообщения:
    1.953
    mov eax, buffer

    ты помещаешь в еах адрес переменной buffer вместо ее значения. В нормальном ассемблере конструкция mov buffer,eax нелепость :) Так что mov dword ptr[buffer],eax mov eax, dword ptr [buffer] и и путаницы не будет.
     
    Последнее редактирование: 9 авг 2018
    Indy_, skales007 и _edge нравится это.
  3. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    Действительно, двусмысленная конструкция. Разыменование памяти должно как то маркироваться, это либо скобки, либо задание смещения(offset для указания отсутствия разыменования).
     
  4. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    f13nd,

    > В нормальном ассемблере конструкция mov buffer,eax нелепость :)

    Для случая записи такая конструкция допустима, так как нет смысла для записи в константу. Для чтения это не ясная ситуация, загрузка это константы, либо выборка из памяти.