https://en.wikipedia.org/w/api.php?action=feedcontributions&feedformat=atom&user=131.188.30.63Wikipedia - User contributions [en]2024-11-01T23:40:47ZUser contributionsMediaWiki 1.44.0-wmf.1https://en.wikipedia.org/w/index.php?title=Three-address_code&diff=387539393Three-address code2010-09-28T14:46:05Z<p>131.188.30.63: </p>
<hr />
<div>In [[computer science]], '''three-address code''' (often abbreviated to TAC or 3AC) is a form of representing [[intermediate language|intermediate code]] used by [[compiler]]s to aid in the implementation of code-improving transformations. Each instruction in three-address code can be described as a 4-[[tuple]]: (operator, operand1, operand2, result).<br />
<br />
Each statement has the general form of:<br />
<br />
<center><math>\text{result} := \text{operand}_1 \, \operatorname{operator} \, \text{operand}_2\,</math></center><br />
<br />
such as:<br />
<br />
<center><math>x := y \, \operatorname{op} \, z\,</math></center><br />
<br />
where ''x'', ''y'' and ''z'' are variables, constants or temporary variables generated by the [[compiler]]. ''op'' represents any operator, ''e.g.'' an arithmetic operator.<br />
<br />
Expressions containing more than one fundamental operation, such as:<br />
<br />
<center><math>p := x + y \times z\,</math></center><br />
<br />
are not representable in three-address code as a single instruction. Instead, they are decomposed into an equivalent series of instructions, such as<br />
<br />
<center><br />
<math>t_1 := y \times z\,</math><br />
<br />
<math>p := x + t_1\,</math><br />
</center><br />
<br />
The term ''three-address code'' is still used even if some instructions use more or fewer than two operands. The key features of three-address code are that every instruction implements exactly one fundamental operation, and that the source and destination may refer to any available register.<br />
<br />
A refinement of three-address code is [[static single assignment form]] (SSA).<br />
<br />
==Example==<br />
<source lang="c"><br />
int main(void)<br />
{<br />
int i;<br />
int b[10];<br />
for (i = 0; i < 10; ++i) {<br />
b[i] = i*i; <br />
}<br />
}<br />
</source><br />
The preceding [[C (programming language)|C]] program, translated into three-address code, might look something like the following:<br />
<code><br />
i := 0 ; assignment<br />
L1: if i >= 10 goto L2 ; conditional jump<br />
t0 := i*i<br />
t1 := &b ; address-of operation<br />
t2 := t1 + i ; t2 holds the address of b[i]<br />
*t2 := t0 ; store through pointer<br />
i := i + 1<br />
goto L1<br />
L2:<br />
</code><br />
<br />
==See also==<br />
*[[Intermediate language]]<br />
*[[Reduced instruction set computer]]<br />
*[[Jimple]]<br />
<br />
==External links==<br />
*[http://www.cs.arizona.edu/classes/cs453/fall07/DOCS/intcode.html CSc 453: A Three-Address Intermediate Code Instruction Set for C--]<br />
<br />
[[Category:Compiler theory]]<br />
[[Category:Articles with example C code]]<br />
<br />
[[it:Three address code]]<br />
[[ja:3番地コード]]<br />
[[vi:Mã địa chỉ ba]]</div>131.188.30.63https://en.wikipedia.org/w/index.php?title=Talk:Reiser4&diff=52318563Talk:Reiser42006-05-09T14:57:43Z<p>131.188.30.63: </p>
<hr />
<div>==Stub==<br />
<br />
Well personally, this article is very scant. Its really more like a stub. In fact, if no one objects, I'd add the stub tag to it. Namely, it only generalises the features of reiserfs, does not explain why its that way...ie. it does not mention the fact that it uses dancing trees instead of B+ trees, or several other critical principles. I think we could all agree that someone who has expertise in this area should improvise. Take for example, the windows filesystem [[File Allocation Table|FAT32]], its quite a simple filesystem, far more inferior (we can agree on that, I think, that FAT32 is far less advanced) - yet it has dozen or more long paragraphs. Surely this article deserves more? -- [[User:Natalinasmpf|Natalinasmpf]] 04:13, 23 Oct 2004 (UTC)<br />
<br />
: The article seems to have passed the stub stage. Would anyone mind if I archived (deleted) the above comment? It doesn't seem to apply anymore, and then the TOC for this talk page could move to the top. --- [[User:Markspace|Markspace]] 23:28, 4 May 2006 (UTC)<br />
<br />
:: Problem solved. [[User:AlistairMcMillan|AlistairMcMillan]] 01:21, 5 May 2006 (UTC)<br />
<br />
== Journaling Link ==<br />
<br />
The Journaling link seems to point to a list of writing techniques (as in, literature writing.) Can someone more knowledgeable than me give a better description of Journaling with respect to Filesystems and link to that? --[[User:RustB|RustB]] 03:30, 6 Mar 2005 (UTC)<br />
<br />
== Further information ==<br />
<br />
Does anyone know a good source for following the inclusing process of reiser4 into the kernel? [[User:Chotchki|Chotchki]] 00:14, 15 November 2005 (UTC)<br />
<br />
:[[KernelTrap]] or the Reiser Mailinglist http://blog.gmane.org/gmane.comp.file-systems.reiserfs.general --[[User:Hhielscher|Hhielscher]] 00:21, 15 November 2005 (UTC)--[[User:Hhielscher|Hhielscher]] 00:21, 15 November 2005 (UTC)<br />
<br />
<br />
==Failures==<br />
<br />
We recently had a major reiser4 failure. No data was lost but reiser4 bugs started popping up in dmesg and finally the machine crashed. We are now in the process of migrating to ext3 however after a mkfs.ext3 the partition simply refuses to mount as anything other than reiser4 (mount -t ext3 just says partition already mounted and it isnt). My advise is, avoid using reiser4 at all costs - I now see why all gentoo developers consider it evil and unusable.<br />
<br />
:Sounds like a hardware problem there. Nothing that reiser4 does should be affect the operation of ext3. --[[User:Gmaxwell|Gmaxwell]] 02:38, 22 November 2005 (UTC)<br />
<br />
==Stability==<br />
<br />
I've moved the following from the article.<br />
<br />
: Reiser4 is of very questionable stability at its current state. While the creators state they cannot make it crash any longer, there are still frequent reports of corruption and data loss. As with any new technology, avoid using in production.<br />
<br />
The POV style of the text isn't really good, without some better citations I think we should leave it at the obvious.. the article already says that it's beta still and we really should leave it at that. --[[User:Gmaxwell|Gmaxwell]] 02:38, 22 November 2005 (UTC)<br />
<br />
Wait -- beta? No, the article says it's not in the mainstream kernel and not really supported, which is true. It's also true that Namesys has officially "realeased" it, and encourages everyone to try it, while simultaneously warning that until millions of users have tested it, there will be obscure bugs not found in more mature filesystems. I actually agree with you in that it's beta or release candidate quality, by Linux standards, but by the standards of most commercial software, it's first-release quality. -- David Masover (not registered yet)<br />
<br />
== can "at the moment" be dated? ==<br />
<br />
The second paragraph ends with "at the moment". I can't tell if this is true today, and in 5 years time I will really have no way to tell. Can someone state an approximation for when inclusion in Linux became the priority. [[User:85.28.66.218|85.28.66.218]] 19:42, 6 January 2006 (UTC)<br />
<br />
:Well, you can tell by checking the diffs when the comment was added. I agree with what you are saying, though, "at the moment" is not clear to a casual reader. I think there is a wiki date format that allows it to change from, something like, "now" to "as of Dec. 25, 2005". Let me see if I can find it and I'll add it to the article. --- [[User:Markspace|Markspace]] 23:24, 4 May 2006 (UTC)<br />
<br />
== Crypto/Compression ==<br />
<br />
Reiser4 supports these through a "CryptCompress" plugin. The Article should updated. I don't know if it is included in the default distribution though. You can read more about it on namesys website -- Johannes Jordan</div>131.188.30.63