﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-Chrome V8-随笔分类-Compiler</title><link>http://www.cppblog.com/NightAway/category/12320.html</link><description /><language>zh-cn</language><lastBuildDate>Fri, 06 Feb 2015 04:11:36 GMT</lastBuildDate><pubDate>Fri, 06 Feb 2015 04:11:36 GMT</pubDate><ttl>60</ttl><item><title>JIT Compiler in Action 第一节 : 跑通最基本的例子</title><link>http://www.cppblog.com/NightAway/archive/2015/02/06/209752.html</link><dc:creator>NightAway</dc:creator><author>NightAway</author><pubDate>Fri, 06 Feb 2015 02:22:00 GMT</pubDate><guid>http://www.cppblog.com/NightAway/archive/2015/02/06/209752.html</guid><wfw:comment>http://www.cppblog.com/NightAway/comments/209752.html</wfw:comment><comments>http://www.cppblog.com/NightAway/archive/2015/02/06/209752.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/NightAway/comments/commentRss/209752.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/NightAway/services/trackbacks/209752.html</trackback:ping><description><![CDATA[<h3>目的：需要跑通的例子<br /></h3><div style="padding: 4px 5px 4px 4px; font-size: 13px; border: 1px solid #cccccc; width: 1327.890625px; word-break: break-all; background-color: #eeeeee;">1 + 2</div><div><br />&nbsp;&nbsp;&nbsp;这个例子是最简单的表达式，我们需要经过词法解析，语法解析， 生成中间代码，最后生成机器代码这四步。<br /><strong><br />一. 词法解析<br /></strong>&nbsp; &nbsp;词法解析很简单，输入 "1 + 2" 的字符串，输出则为独立的Token：1，+ 和 2 。<br /><br /><strong>二. 语法解析<br /></strong>&nbsp; &nbsp;语法解析阶段输入为上个阶段的Token，输出则为抽象语法树。<br />&nbsp; &nbsp;&nbsp;<img src="http://www.cppblog.com/images/cppblog_com/nightaway/QQ%E5%9B%BE%E7%89%8720150206100633.png" width="487" height="255" alt="" /><br /><strong>三. 生成中间代码<br /></strong>&nbsp; &nbsp;这一阶段我们需要将上个阶段的抽象语法树生成为类似Intel汇编语言的中间代码。<br />&nbsp; &nbsp;mov eax, 1<br />&nbsp; &nbsp;add eax, 2<br /><br /><strong>四. 生成机器代码</strong><br />&nbsp; &nbsp;最后则是将中间代码翻译成x86机器代码。<br />&nbsp; &nbsp;B8 01 00 00 00<br />&nbsp; &nbsp;83C0 02<br /></div><img src ="http://www.cppblog.com/NightAway/aggbug/209752.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/NightAway/" target="_blank">NightAway</a> 2015-02-06 10:22 <a href="http://www.cppblog.com/NightAway/archive/2015/02/06/209752.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>