mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-21 21:29:41 +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
|
||||
(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
|
||||
==============
|
||||
|
Loading…
x
Reference in New Issue
Block a user