Я пытаюсь понять инструкцию getelementptr в llvm IR, но не полностью ее понимаю.Приращение ptr в llvm ir
У меня есть структура, как показано ниже -
struct Foo {
int32_t* p;
}
Я хочу, чтобы это сделать -
foo.p++;
Что бы правильный код для этого?
%0 = getelementptr %Foo* %fooPtr, i32 0, i32 0
%1 = getelementptr i32* %0, i8 1
store i32* %1, i32* %0
Мне интересно, нужно ли сначала загружать значение в% 0 с использованием «нагрузки» перед выполнением 2-й строки.
Спасибо!
Я прочитал этот документ, и я хочу, чтобы повторить свое понимание, чтобы убедиться, что я получил это - «первое числовое значение после того, как PTR аргумент делает неявное разыменования указателя и добавляет это номер к нему ... Последующие числа просто смещаются к адресу памяти, и они не вызывают разыменования .. "... Это правильно? – user855