И, главное, зачем? И чем для этой цели не подошёл компилятор С++?
Нифига не mov, должно быть lea ebx, [ebp - 8]
Нифига +4 не нужно. Смещение &function == 0.
Нифига не +20, размер этой структуры -- 4.
Идея виртуальной памяти состоит в том, что исполнительные адреса, фигурирующие в машинных командах, считаются не адресами физических ячеек памяти, а некоторыми абстрактными виртуальными адресами. Все множество виртуальных адресов называется виртуальным адресным пространством. Виртуальные адреса преобразуются процессором в адреса ячеек памяти (физические адреса) по некоторым правилам, причем эти правила могут
динамически изменяться.
Адреса в коде задачи теперь формируются в предположении, что задача
будет работать в адресном пространстве, начинающемся с нуля. Операционная система может загрузить задачу в любой свободный участок памяти:
проблема адаптации программы к адресам решается установкой соответствующего значения базового и предельного регистров. Более того, при необходимости задачу можно переместить в другое место памяти для этого достаточно скопировать содержимое ее адресного пространства в память по новым адресам и изменить соответствующим образом значения базы и предела.
Виртуа́льная па́мять (англ. virtual memory) — метод управления памятью компьютера, позволяющий выполнять программы, требующие больше оперативной памяти, чем имеется в компьютере, путём автоматического перемещения частей программы между основной памятью и вторичным хранилищем (например, жёстким диском)[1][2][3]. Для выполняющейся программы данный метод полностью прозрачен и не требует дополнительных усилий со стороны программиста, однако реализация этого метода требует как аппаратной поддержки, так и поддержки со стороны операционной системы