2015-06-27 4 views
0

Я новичок до LLVM IR, и я пытаюсь имитировать некоторые инструкции x86 в LLVM IR.Что такое код перемещения в LLVM IR?

Вот простой случай:

move %eax, %ebx 

Однако я не нашел соответствующие mov опкода после просмотра материалов на here и here.

Так что мой вопрос:

  1. Если я хочу, чтобы имитировать mov опкод с использованием LLVM IR? Что мне делать?

  2. Я новичок в LLVM IR, и, вероятно, я бы потратил много времени на эту «симуляционную» работу, какова должна быть лучшая ссылка на LLVM IR?

Я очень признателен, если кто-нибудь может мне помочь. Благодаря!

ответ

5

Не существует эквивалента инструкции mov. LLVM IR находится в SSA (Static Single Assignment) form, что означает, что каждому регистру присваивается значение ровно один раз. Существует неограниченное количество (виртуальных) регистров - каждая операция создает новый по мере необходимости.

Неясно, что вы имеете в виду, имитируя инструкции x86, но если он вас устраивает, вы могли бы выделить память в стеке для локальной переменной для каждого регистра (используя alloca инструкцию), и использовать инструкции load и store скопировать между ними.