Выделение динамической памяти и динамическое связывание

Тема в разделе "WASM.BEGINNERS", создана пользователем HumanAPI, 23 июн 2007.

  1. HumanAPI

    HumanAPI New Member

    Публикаций:
    0
    Регистрация:
    23 июн 2007
    Сообщения:
    13
    Привет всем.
    Вопрос выделение динамической памяти в windows возможно только через winapi функции или есть еще какието способы?
    И еще вопросик в языках высокого уровня есть понятие динамическое связывание, а как оно реализуется в ассемблере?
     
  2. nester7

    nester7 New Member

    Публикаций:
    0
    Регистрация:
    5 дек 2003
    Сообщения:
    720
    Адрес:
    Russia
    Ответ(?) на первый вопрос:
    Поскольку память общесистемный ресурс, то получить его в свое пользование можно только через вызовы операционной системы, причём не важно как именно, через стандартную библиотеку или через Win API.
     
  3. t00x

    t00x New Member

    Публикаций:
    0
    Регистрация:
    15 фев 2007
    Сообщения:
    1.921
    HumanAPI
    Можно выделить блок большего размера чем нужно (средствами API), и записать туда несколько элементов данных.

    Через структуры и указатели (обычно в структурах).
     
  4. HumanAPI

    HumanAPI New Member

    Публикаций:
    0
    Регистрация:
    23 июн 2007
    Сообщения:
    13
    nester7
    А что эта за стандартная библиотека? (грызу Fasm)
     
  5. nester7

    nester7 New Member

    Публикаций:
    0
    Регистрация:
    5 дек 2003
    Сообщения:
    720
    Адрес:
    Russia
    я про стандартную библиотеку Си.
    А в чём проблемы-то?
     
  6. HumanAPI

    HumanAPI New Member

    Публикаций:
    0
    Регистрация:
    23 июн 2007
    Сообщения:
    13
    t00x
    А можно подробней?
     
  7. Freeman

    Freeman New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2005
    Сообщения:
    1.385
    Адрес:
    Ukraine
    Код (Text):
    1. struct asd
    2. prev dd ?-указатель на предыдущую структуру
    3. next dd ?-на следующую
    4. ....-сама структура
    5. ....
    6. ends
     
  8. HumanAPI

    HumanAPI New Member

    Публикаций:
    0
    Регистрация:
    23 июн 2007
    Сообщения:
    13
    nester7
    Ты имееш в виду msvcrt.dll?
    А разве она не использует теже функции Win API?
     
  9. HumanAPI

    HumanAPI New Member

    Публикаций:
    0
    Регистрация:
    23 июн 2007
    Сообщения:
    13
    FreeManCPM
    Извени я имел в виду не списки.
    Динамическое связывание это кагда вызываемая подпрограмма определяется во время выполнения программы(вроде наследования в классах).
     
  10. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Использует. В любом случае любая аллокация в винде в юзермоде опирается на kernel32!VirtualAlloc (ntdll!ZwAllocateVirtualMemory)
     
  11. nester7

    nester7 New Member

    Публикаций:
    0
    Регистрация:
    5 дек 2003
    Сообщения:
    720
    Адрес:
    Russia
    Использует, именно потому:

    "память общесистемный ресурс - получить его в свое пользование можно только через вызовы операционной системы, причём не важно как именно, через стандартную библиотеку(msvcrt.dll) или через Win API."
    :_)

    Ты так и не сказал в чём проблема. Сформулируй.
     
  12. Freeman

    Freeman New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2005
    Сообщения:
    1.385
    Адрес:
    Ukraine
    Код (Text):
    1. proc summ par1,par2
    2. ....
    3. proc multpl par1,par2
    4. ....
    5. proc divide par1,par2
    6. ....
    7. ....
    8. cmp al, '+'
    9. jnz @f
    10. mov [proced],summ
    11. @@:
    12. cmp al, '*'
    13. jnz @f
    14. mov [proced],multpl
    15. @@:
    16. cmp al, '/'
    17. jnz @f
    18. mov [proced],divide
    19. @@:
    20. invoke proced chislo1,shislo2
    можно указатели на процедуры держать в массивах, и вызывать по индексу, полученному в результате определенных операций
     
  13. HumanAPI

    HumanAPI New Member

    Публикаций:
    0
    Регистрация:
    23 июн 2007
    Сообщения:
    13
    nester7
    Просто с Win API не могу разобраться, а хочется всякие VirtualAlloc, GlobalAlloc, HeapAlloc, а еще функции Lock кого когда и в какой последовательности надо юзать непонятно.
     
  14. nester7

    nester7 New Member

    Публикаций:
    0
    Регистрация:
    5 дек 2003
    Сообщения:
    720
    Адрес:
    Russia
    Тогада ответ один и неизменен - Джефри Рихтер :)


    http://wasm.ru/forum/viewtopic.php?pid=185817#p185817
     
  15. HumanAPI

    HumanAPI New Member

    Публикаций:
    0
    Регистрация:
    23 июн 2007
    Сообщения:
    13
    FreeManCPM
    Спасибо я понял :)
     
  16. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    HumanAPI
    Рихтер однозначно рулёз ;)
    Но еще загляни сюда и заюзай поиск по сайту постов от leo с ключевым словом VirtualAlloc ;)