<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[fohoo的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/fohoo</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; fohoo]]></copyright><item><title><![CDATA[用AI两天写了一个C语言编译器XCC(基础部分)，包括AST，目标代码生成（deepseek-r1真慢转了Qwen-code）]]></title><link>https://blog.youkuaiyun.com/fohoo/article/details/154046790</link><guid>https://blog.youkuaiyun.com/fohoo/article/details/154046790</guid><author>fohoo</author><pubDate>Wed, 29 Oct 2025 01:41:46 +0800</pubDate><description><![CDATA[后面用qwen-code，快多了，比deepseek-R1的编码分析能力还是强，还会经常使用测试用例来分析问题，回归测试。Makefile (make 生成compiler， make run 编译sampler1.c，生成output运行，打印result，最后一个赋值变量作为退出码)一个C语言编译器(基础部分)，使用Linux的Flex和Bison，生成Linux 64位的汇编。=, <, >, <=, >=ast_codegen.c (AST代码生成实现)✅ 算术运算：+, -, *, /]]></description><category></category></item><item><title><![CDATA[使用LEX&YACC设计可编译成执行程序的计算器示例，包括汇编的目标代码生成]]></title><link>https://blog.youkuaiyun.com/fohoo/article/details/153833017</link><guid>https://blog.youkuaiyun.com/fohoo/article/details/153833017</guid><author>fohoo</author><pubDate>Fri, 24 Oct 2025 16:34:58 +0800</pubDate><description><![CDATA[环境Linux，Ubantu_20.04 64位，lex/yacc使用linux的flex/bison。我们设计一个Linux 64位的编译器，编译上述代码为可执行文件，计算代码的结果。codegen.c (代码生成实现，生成Linux 64位运行代码)假设text_input.txt文件包含一行计算公式，比如。codegen.h  (代码生成头文件)]]></description><category></category></item><item><title><![CDATA[60行C++代码写了一个QT信号槽机制]]></title><link>https://blog.youkuaiyun.com/fohoo/article/details/123113424</link><guid>https://blog.youkuaiyun.com/fohoo/article/details/123113424</guid><author>fohoo</author><pubDate>Thu, 24 Feb 2022 15:53:03 +0800</pubDate><description><![CDATA[60行C++代码实现QT信号槽机制(浅显易懂，一看就会)]]></description><category></category></item><item><title><![CDATA[OGRE 简明扼要的分析（自己记录看看）]]></title><link>https://blog.youkuaiyun.com/fohoo/article/details/47805211</link><guid>https://blog.youkuaiyun.com/fohoo/article/details/47805211</guid><author>fohoo</author><pubDate>Thu, 20 Aug 2015 19:38:03 +0800</pubDate><description><![CDATA[据说OGRE要追上商业引擎，还是比较期待。昨天下午下载了OGRE，HG然后CMAKE，看了一下代码，写点记录。


引擎=数据结构+算法+架构
架构=模块化（适合原型封装，简洁高效不够方便，更方便需要抽象）+对象化（适合人类思维接口，需要合适的类抽象，增加类依赖）+泛型化（抽象类型再抽象模板，多类型共用一套代码和类型特化代码）]]></description><category></category></item><item><title><![CDATA[开发语言的选择]]></title><link>https://blog.youkuaiyun.com/fohoo/article/details/40977447</link><guid>https://blog.youkuaiyun.com/fohoo/article/details/40977447</guid><author>fohoo</author><pubDate>Mon, 10 Nov 2014 10:43:44 +0800</pubDate><description><![CDATA[开发语言的选择，我们要首先掌握清楚它的特性，然后根据实际的需求考量多种因素来分析选择适当的语言比如：面向结构，面向对象，面向并行的函数式，最适配需求的是什么编程模型？对应擅长这种模型的最适合的语言是什么？需求最需要什么？运行效率，开发效率？灵活性，安全性，复杂性？　或其他，最重要是那一点？我们需要什么样的效率可以？极致的效率？满足基准的效率？我们到底需要多少灵活性（设计时和运行时）？我们的容错需要...]]></description><category></category></item><item><title><![CDATA[在Windows下进行Linux/FreeBSD/Unix的GCC远程开发和调试]]></title><link>https://blog.youkuaiyun.com/fohoo/article/details/1881693</link><guid>https://blog.youkuaiyun.com/fohoo/article/details/1881693</guid><author>fohoo</author><pubDate>Tue, 13 Nov 2007 10:24:00 +0800</pubDate><description><![CDATA[前置条件：可以使用ssh远程登录Linux/FreeBSD/Unix(笔者用SecureCRT 5.0)编辑代码：使用Source Insight 编辑（笔者用Source Insight 3.5），采用映射Linux/FreeBSD/Unix源代码目录到Windows路径进行编辑编译代码：使用一个自定义脚本fmake,用于将make的输出记录到源代码目录的result.txt，然后定义一个S]]></description><category></category></item><item><title><![CDATA[剖析STL容器遍历删除时诡异的erase(iter++)]]></title><link>https://blog.youkuaiyun.com/fohoo/article/details/1490176</link><guid>https://blog.youkuaiyun.com/fohoo/article/details/1490176</guid><author>fohoo</author><pubDate>Mon, 22 Jan 2007 16:08:00 +0800</pubDate><description><![CDATA[我们知道STL中结点类容器(如:list,hash_map)遍历时进行删除时，需要这样做：for(list::iterator iter = m_list.begin(); iter != m_list.end(); ){    if(需要删除)    {        m_list.erase(iter++);    }    else        ++iter;}而不能这样：for(li]]></description><category></category></item><item><title><![CDATA[程序员应该学C语言的十个理由]]></title><link>https://blog.youkuaiyun.com/fohoo/article/details/1450019</link><guid>https://blog.youkuaiyun.com/fohoo/article/details/1450019</guid><author>fohoo</author><pubDate>Wed, 20 Dec 2006 09:23:00 +0800</pubDate><description><![CDATA[Every programmer should learn C during their programming career. Its benefits are to numerous to ignore. Not only will it open many more job opportunities, but it will teach you more about computers a]]></description><category></category></item><item><title><![CDATA[使用LEX&YACC设计一个计算器的例子]]></title><link>https://blog.youkuaiyun.com/fohoo/article/details/1321144</link><guid>https://blog.youkuaiyun.com/fohoo/article/details/1321144</guid><author>fohoo</author><pubDate>Thu, 05 Oct 2006 01:51:00 +0800</pubDate><description><![CDATA[calc.l%{#include #include #include #include "calc.tab.h"%}%option noyywrap%%([0-9])+|([0-9])*"."([0-9])+    { yylval = atof( yytext ); /*printf("yytext:%s, yylval:%f/n", yytext, yylval);*/ retur]]></description><category></category></item><item><title><![CDATA[自己为了理解Functor写的一个例子]]></title><link>https://blog.youkuaiyun.com/fohoo/article/details/621469</link><guid>https://blog.youkuaiyun.com/fohoo/article/details/621469</guid><author>fohoo</author><pubDate>Sat, 11 Mar 2006 01:25:00 +0800</pubDate><description><![CDATA[// functortest.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include #include templateclass unary_function{public: typedef T1 first_argument_type; typedef T2 resu]]></description><category></category></item><item><title><![CDATA[谈谈我对攻读计算机研究生的看法[转自TIANYA/优快云]]]></title><link>https://blog.youkuaiyun.com/fohoo/article/details/273051</link><guid>https://blog.youkuaiyun.com/fohoo/article/details/273051</guid><author>fohoo</author><pubDate>Sat, 29 Jan 2005 14:23:00 +0800</pubDate><description><![CDATA[发信人: chinabingo (ice), 信区: Computer 标 题: 谈谈我对攻读计算机研究生的看法[转自TIANYA/优快云] 发信站: 虎踞龙蟠 (Thu Dec 23 10:52:23 2004), 转信 回复优快云和KAOYAN诸位网友的几点看法，（为避免吵架，郑重声明，本人不是高手 ，只是有感而发的一点个人陋见，欢迎指正，事先感谢）： 　　 　　就我自己的理解，谈谈我对读]]></description><category></category></item><item><title><![CDATA[父线程等候10个子线程完成的例子]]></title><link>https://blog.youkuaiyun.com/fohoo/article/details/230389</link><guid>https://blog.youkuaiyun.com/fohoo/article/details/230389</guid><author>fohoo</author><pubDate>Mon, 27 Dec 2004 09:06:00 +0800</pubDate><description><![CDATA[这是个挺有趣的程序，我写了个例子同步了10个子线程，可以参考下：public class Test { static Test test = null; static int childNum = 0; synchronized static void decSem(){  childNum--;  if(childNum == 0){   synchronized(test){    test.]]></description><category></category></item><item><title><![CDATA[Non-Blocking Socket I/O in JDK 1.4]]></title><link>https://blog.youkuaiyun.com/fohoo/article/details/223614</link><guid>https://blog.youkuaiyun.com/fohoo/article/details/223614</guid><author>fohoo</author><pubDate>Tue, 21 Dec 2004 09:26:00 +0800</pubDate><description><![CDATA[Non-Blocking Socket I/O in JDK 1.4By Tim Burns, Senior Software Engineer, Owl Mountain Software, LLCLast changed: 12/14/2001 7:11 AMJDK 1.4 provides developers non-blocking I/O on both sockets]]></description><category></category></item><item><title><![CDATA[GRUB的小秘密]]></title><link>https://blog.youkuaiyun.com/fohoo/article/details/218672</link><guid>https://blog.youkuaiyun.com/fohoo/article/details/218672</guid><author>fohoo</author><pubDate>Thu, 16 Dec 2004 17:12:00 +0800</pubDate><description><![CDATA[我看了一下GRUB的源代码：主要的窍门是这样的：GRUB分两个部分stage1,stage2(stage1.5)stage1就是512的引导区了，它加载放在文件系统中的stage2。而stage2完成GRUB的其它的事情，命令行，配罝，从文件系统中加载Kernel。。。但是stage1只能有512个字节的代码。。是不可能识别文件系统的：(解决的小窍门就是，stage1只装入stag]]></description><category></category></item><item><title><![CDATA[大道至简之编译原理初探]]></title><link>https://blog.youkuaiyun.com/fohoo/article/details/22658</link><guid>https://blog.youkuaiyun.com/fohoo/article/details/22658</guid><author>fohoo</author><pubDate>Tue, 22 Jun 2004 18:51:00 +0800</pubDate><description><![CDATA[       这点文字是为懒人写的，懒人总是希望能像Neo一样，用个程序插头就能一下子学会中国功夫，呵呵，我也想。有乐趣才会想学习，所以希望写点能引起懒人乐趣的文字，先体会到了编译的乐趣，才会有深入学习的兴趣，对吧？我就是这样一个懒人。       好了，说说编译吧。编译是一个语言翻译的过程，也就是把编程语言翻译成机器语言的过程。它要经过词法分析，语法分析，语义分析及代码生成这几个主要过程。其]]></description><category></category></item></channel></rss>