mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-22 13:29:44 +00:00
docs: Add FAQ about "storing to a virtual register".
This came up for the N+1'st time today in IRC. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171155 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
6fa16e192f
commit
bdb0c0aaf3
23
docs/FAQ.rst
23
docs/FAQ.rst
@ -53,6 +53,29 @@ Some porting problems may exist in the following areas:
|
|||||||
like the Bourne Shell and sed. Porting to systems without these tools
|
like the Bourne Shell and sed. Porting to systems without these tools
|
||||||
(MacOS 9, Plan 9) will require more effort.
|
(MacOS 9, Plan 9) will require more effort.
|
||||||
|
|
||||||
|
What API do I use to store a value to one of the virtual registers in LLVM IR's SSA representation?
|
||||||
|
---------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
In short: you can't. It's actually kind of a silly question once you grok
|
||||||
|
what's going on. Basically, in code like:
|
||||||
|
|
||||||
|
.. code-block:: llvm
|
||||||
|
|
||||||
|
%result = add i32 %foo, %bar
|
||||||
|
|
||||||
|
, ``%result`` is just a name given to the ``Value`` of the ``add``
|
||||||
|
instruction. In other words, ``%result`` *is* the add instruction. The
|
||||||
|
"assignment" doesn't explicitly "store" anything to any "virtual register";
|
||||||
|
the "``=``" is more like the mathematical sense of equality.
|
||||||
|
|
||||||
|
Longer explanation: In order to generate a textual representation of the
|
||||||
|
IR, some kind of name has to be given to each instruction so that other
|
||||||
|
instructions can textually reference it. However, the isomorphic in-memory
|
||||||
|
representation that you manipulate from C++ has no such restriction since
|
||||||
|
instructions can simply keep pointers to any other ``Value``'s that they
|
||||||
|
reference. In fact, the names of dummy numbered temporaries like ``%1`` are
|
||||||
|
not explicitly represented in the in-memory representation at all (see
|
||||||
|
``Value::getName()``).
|
||||||
|
|
||||||
Build Problems
|
Build Problems
|
||||||
==============
|
==============
|
||||||
|
Loading…
x
Reference in New Issue
Block a user