Интернет магазин китайских планшетных компьютеров



Компьютеры - Low Level Virtual Machine - Память

02 мая 2011


Оглавление:
1. Low Level Virtual Machine
2. Особенности
3. Типы данных
4. Операции
5. Память
6. Операции с указателями



Помимо значений-регистров, в LLVM есть и работа с памятью. Значения в памяти адресуются типизированными указателями. Обратиться к памяти можно с помощью двух инструкций: load и store. Например:

%x = load i32* %x.ptr        ; загрузить значение типа i32 по указателю %x.ptr 
%tmp = add i32 %x, 5         ; прибавить 5 
store i32 %tmp, i32* %x.ptr  ; и положить обратно

Инструкция malloc транслируется в вызов одноименной системной функции и выделяет память на куче, возвращая значение — указатель определенного типа. В паре с ней идёт инструкция free.

%struct.ptr = malloc { double, double } 
%string = malloc i8, i32 %length 
%array = malloc 
free i8* %string

Инструкция alloca выделяет память на стеке.

%x.ptr = alloca double ; %x.ptr имеет тип double* 
%array = alloca float, i32 8 ; %array имеет тип float*, а не!

Память, выделенная alloca, автоматически освобождается при выходе из функции при помощи инструкций ret или unwind.



Просмотров: 5120


<<< Microsoft Virtual PC