Динамическая память – это оперативная память ПК, представляемая программно при её работе, за вычетом сегмента данных 164 Кбайта,стёка(обычно 16 Кбайт) и собственно тела программы (>200-300 Кбайт)
Д.п. - это практически единственная возможность обработки массивов данных большой размерности.
Сегмент данных - это непрерывная область оперативной памяти в которой размещаются все переменные, объявленные в программе.
Д. размещение данных – означает использование Д.П. непосредственно при работе программы.
ОЗУ ПК представляет собой совокупность ячеек для хранения информации - байтов, каждый из которых имеет собственный номер. Эти номера – называются адресами,позволяющими обращаться к любому байту памяти.
Указатели – гибкое средство управления Д.П.. Это переменная, которая в качестве своего значения содержит адрес байта памяти. В ПК адреса задаются сегментами и 16 разрядными смещениями.
Сегмент – это участок памяти имеющий длину 65536(64Кбайта) и начинается с физического адреса, кратного 16.
|
|
Смещение – указывает, сколько байт от начала сегмента нужно отступить, чтобы обратиться к нужному адресу. Адресное пространство 1 Мбайт – стандартная память ПК. Для адресации в пределах 1 Мбайта нужно 20 двоичных разрядов, которые получаются из 2-х 16 разрядных слов (сегмента и смещения типа word) =>содержимое сегмента смещается на 4 разряда, освободившиеся правые заполняются нулями.
Структура памяти: SYS область – КУЧА – SYS область
I^:=2;{в область памяти I заносится 2}
Функции:
ADDR (x) – возвращает результат типа pointer,в котором содержится адрес аргумента,x- любой объект программы (переменная, процедура, функция)
CSEG- возвращает значение, хранящееся в регистре CS микропроцессора. Результат в слове типа word.
DSEG - возвращает значение, хранящееся в регистре DS микропроцессора. Результат в слове типа word.
MAXAVAIL-возвращает размер в байтах наибольшего непрерывного участка кучи.MAXAVAIL(LONGINT).
За вызов процедуры NEW или GETMEM нельзя зарезервировать памяти больше, чем значение, возвращаемое этой функцией.
MEMAIAIL(LONGINT)- возвращает размер в байтах общего свободного пространства кучи
OFS(Х)-возвращает значение типа WORD, содержащее смещения адреса указанного объекта.(Х)-выражение любого типа или процедура.
PTR(seg, ofs) - возвращает значение типа POINTER, по заданному сегменту и смещению
SEG(X) - возвращает значение типа WORD, содержащее сегмент адреса указанного объекта.
SIZEOF(X)- возвращает длину в байтах внутреннего представления указанного объекта.X- имя переменной, функции или типа.
Процедуры:
DISPOSE- возвращает в кучу фрагмент динамической памяти,который был ранее зарезервирован за типизированным указателем.
|
|
DISPOSE(TP) – типизированный указатель
FREEMEM - возвращает в кучу фрагмент динамической памяти,который был ранее зарезервирован за нетипизированным указателем
FREEMEM(P,SIZE) – P-нетипизированный указатель,SIZE-длинна освобождающегося размера.
GETMEM(P,SIZE) – резервирует за нетипизированным указателем фрагмент Д,П, требуемого размера(не более 65521)
MARK(PTR) – запоминает текущее значение указателя кучи. PTR- указатель любого типа
NEW - резервирует фрагмент кучи для размещения переменной.
NEW(TP) - тип указатель
RELISE(PTR) – освобождает участок кучи.PTR – указатель любого типа,в котором предварительно было сохранено процедурой MARK значение указателя кучи.
Д.П. широко используется для временного запоминания данных при работе с графикой и звуком в ПК.
Среда ТП. Основные выполняемые функции. Система меню (работа с файлами, запуск, компиляция, отладка (Debug), работа с окнами).
Меню run
Run- запуск на исполнение
Step over-пошаговое исполнение программы
Trace into- пошаговое исполнение программы только подпрограммы выполняются оператор за оператором
Go to cursor – выполнение до курсора
Program reset- завершение процесса отладки
Parameters- окно для ввода параметров для отладки
Меню compile
Compile- компиляция файла, находящегося в активном окне редактирования.
Make – условная компиляция изменённых модулей в ЕХЕ файл
Build- безусловная компиляция многомодульной программы с созданием ЕХЕ файла
Target…-выбор в окне таргет целевой платформы для приложения
Primary file…-открывает окно для указания главного файла, компилируемой программы.
Меню Debug:
Breakpoints- установка точек условного и безусловного перехода
Call stack – показывает процедуры выполнявшиеся ранее.
Register – информация о регистрах процессора
Watch – окно значений переменных
Output – окно результатов работы программы
User screen – просмотр результатов включая графику
Evaluate/ modify.. – окно изменения значений выражений
Add watch – окно значений и переменных вовремя отладки
Add breakpoint.. – окно установки точек прерывания программы