LLVM IR中的"移动"操作码是什么?

lll*_*lll 0 llvm llc llvm-ir

我是新手LLVM IR,我正在尝试模拟一些x86指令LLVM IR.

这是一个简单的案例:

move %eax, %ebx
Run Code Online (Sandbox Code Playgroud)

但是,mov在查看此处此处的材料后,我没有找到任何相应的操作码.

所以我的问题是:

  1. 如果我想mov使用LLVM IR 模拟操作码?我该怎么办?

  2. 我是新手LLVM IR,也许我会花很长时间在这个"模拟"工作上,关于LLVM IR的最佳参考应该是什么?

如果有人能给我一些帮助,我真的很感激.谢谢!

Ism*_*awi 5

没有相当于mov指令.LLVM IR采用SSA(静态单一赋值)形式,这意味着每个寄存器只分配一次值.有无限数量的(虚拟)寄存器 - 每个操作根据需要创建一个新的寄存器.

通过模拟x86指令不清楚你的意思,但是如果它适合你,你可以在堆栈上为每个寄存器的局部变量分配内存(使用alloca指令),并使用loadstore指令在它们之间复制值.