<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>底层原理 on 文艺技术笔记</title>
        <link>https://wenyiblog.top/tags/%E5%BA%95%E5%B1%82%E5%8E%9F%E7%90%86/</link>
        <description>Recent content in 底层原理 on 文艺技术笔记</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh</language>
        <copyright>文艺技术笔记 | 软件工程师文艺</copyright>
        <lastBuildDate>Sat, 13 Jun 2026 10:00:00 +0800</lastBuildDate><atom:link href="https://wenyiblog.top/tags/%E5%BA%95%E5%B1%82%E5%8E%9F%E7%90%86/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>堆栈操作深度解析：PUSH/POP 与函数调用的秘密</title>
        <link>https://wenyiblog.top/2026/06/asm-07-stack-operations/</link>
        <pubDate>Sat, 13 Jun 2026 10:00:00 +0800</pubDate>
        
        <guid>https://wenyiblog.top/2026/06/asm-07-stack-operations/</guid>
        <description>&lt;h2 id=&#34;栈是什么&#34;&gt;&lt;a href=&#34;#%e6%a0%88%e6%98%af%e4%bb%80%e4%b9%88&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;栈是什么？
&lt;/h2&gt;&lt;p&gt;栈（Stack）是一种 &lt;strong&gt;后进先出（LIFO）&lt;/strong&gt; 的数据结构。在汇编中，它由 &lt;code&gt;SS:SP&lt;/code&gt; 指向。&lt;/p&gt;
&lt;h2 id=&#34;push-与-pop&#34;&gt;&lt;a href=&#34;#push-%e4%b8%8e-pop&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;PUSH 与 POP
&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;PUSH AX    ; SP = SP - 2, [SS:SP] = AX
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;POP  BX    ; BX = [SS:SP], SP = SP + 2
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;PUSH&lt;/strong&gt;：先将 SP 减 2，再写入数据&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;POP&lt;/strong&gt;：先读取数据，再将 SP 加 2&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;栈帧结构&#34;&gt;&lt;a href=&#34;#%e6%a0%88%e5%b8%a7%e7%bb%93%e6%9e%84&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;栈帧结构
&lt;/h2&gt;&lt;p&gt;函数调用时，栈中会形成&lt;strong&gt;栈帧&lt;/strong&gt;：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;高地址
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  +----------------+
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  |    参数 2      |
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  +----------------+
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  |    参数 1      |
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  +----------------+
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  |  返回地址      | ← CALL 自动压入
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  +----------------+
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  |  旧 BP         | ← PUSH BP
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  +----------------+ ← BP (当前栈帧基址)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  |  局部变量 1    |
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  +----------------+
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  |  局部变量 2    |
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  +----------------+ ← SP (栈顶)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;低地址
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;函数调用流程&#34;&gt;&lt;a href=&#34;#%e5%87%bd%e6%95%b0%e8%b0%83%e7%94%a8%e6%b5%81%e7%a8%8b&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;函数调用流程
&lt;/h2&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;; 调用者
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;PUSH 参数 2
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;PUSH 参数 1
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;CALL FUNC
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;; 被调用者 FUNC:
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;PUSH BP        ; 保存旧栈帧
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;MOV BP, SP     ; 设置新栈帧
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;SUB SP, 4      ; 分配局部变量空间
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;; ... 函数体 ...
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;MOV SP, BP     ; 恢复 SP
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;POP BP         ; 恢复旧栈帧
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;RET            ; 弹出返回地址并跳转
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;为什么需要栈&#34;&gt;&lt;a href=&#34;#%e4%b8%ba%e4%bb%80%e4%b9%88%e9%9c%80%e8%a6%81%e6%a0%88&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;为什么需要栈？
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;保存返回地址&lt;/strong&gt;：&lt;code&gt;CALL&lt;/code&gt; 自动将下一条指令地址压栈&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;传递参数&lt;/strong&gt;：通过栈传递，避免寄存器不够用&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;保存上下文&lt;/strong&gt;：子程序可以随意使用寄存器，退出前恢复&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;局部变量&lt;/strong&gt;：每个函数有独立的栈帧，互不干扰&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;总结&#34;&gt;&lt;a href=&#34;#%e6%80%bb%e7%bb%93&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;总结
&lt;/h2&gt;&lt;p&gt;理解栈，就理解了程序执行的&amp;quot;时间线&amp;quot;。每一次函数调用，都是在栈上翻开新的一页。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;下一篇：《标志位详解：CF/ZF/SF/OF 如何影响程序流程》&lt;/p&gt;
&lt;/blockquote&gt;
</description>
        </item>
        <item>
        <title>汇编语言到底是什么？为什么它至今仍然重要</title>
        <link>https://wenyiblog.top/2026/06/asm-01-what-and-why/</link>
        <pubDate>Sat, 13 Jun 2026 09:00:00 +0800</pubDate>
        
        <guid>https://wenyiblog.top/2026/06/asm-01-what-and-why/</guid>
        <description>&lt;h2 id=&#34;为什么还要学汇编&#34;&gt;&lt;a href=&#34;#%e4%b8%ba%e4%bb%80%e4%b9%88%e8%bf%98%e8%a6%81%e5%ad%a6%e6%b1%87%e7%bc%96&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;为什么还要学汇编？
&lt;/h2&gt;&lt;p&gt;在 AI 编程、高级语言框架满天飞的今天，很多人问：&amp;ldquo;汇编还有用吗？&amp;rdquo;&lt;/p&gt;
&lt;p&gt;答案是：&lt;strong&gt;有用，且不可替代。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;汇编语言不是用来写业务的，它是用来&lt;strong&gt;理解计算机如何工作的&lt;/strong&gt;。当你掌握了汇编，你看到的不再是&amp;quot;代码&amp;quot;，而是 CPU 在内存中搬运数据的过程。&lt;/p&gt;
&lt;h2 id=&#34;从机器码到助记符&#34;&gt;&lt;a href=&#34;#%e4%bb%8e%e6%9c%ba%e5%99%a8%e7%a0%81%e5%88%b0%e5%8a%a9%e8%ae%b0%e7%ac%a6&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;从机器码到助记符
&lt;/h2&gt;&lt;p&gt;计算机只认识 &lt;code&gt;0&lt;/code&gt; 和 &lt;code&gt;1&lt;/code&gt;。早期的程序员直接写二进制指令：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;10110000 01100001  ; 将数字 97 (ASCII &amp;#39;a&amp;#39;) 放入 AL 寄存器
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这太反人类了。于是发明了&lt;strong&gt;助记符&lt;/strong&gt;：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;MOV AL, 61h  ; 将 61h 移入 AL 寄存器
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这就是汇编语言的本质：&lt;strong&gt;机器指令的人类可读包装&lt;/strong&gt;。它与机器码是一一对应的关系。&lt;/p&gt;
&lt;h2 id=&#34;高级语言的黑盒&#34;&gt;&lt;a href=&#34;#%e9%ab%98%e7%ba%a7%e8%af%ad%e8%a8%80%e7%9a%84%e9%bb%91%e7%9b%92&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;高级语言的&amp;quot;黑盒&amp;quot;
&lt;/h2&gt;&lt;p&gt;我们用 Python/Java 写 &lt;code&gt;a = b + c&lt;/code&gt;，编译器会做大量优化：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;寄存器分配&lt;/li&gt;
&lt;li&gt;指令重排&lt;/li&gt;
&lt;li&gt;内联展开&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;你看到的是一行代码，机器执行的是几十条指令。&lt;strong&gt;汇编语言打破了这个黑盒&lt;/strong&gt;，让你看到每一步的代价。&lt;/p&gt;
&lt;h2 id=&#34;汇编的现代应用场景&#34;&gt;&lt;a href=&#34;#%e6%b1%87%e7%bc%96%e7%9a%84%e7%8e%b0%e4%bb%a3%e5%ba%94%e7%94%a8%e5%9c%ba%e6%99%af&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;汇编的现代应用场景
&lt;/h2&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th style=&#34;text-align:left&#34;&gt;领域&lt;/th&gt;
&lt;th style=&#34;text-align:left&#34;&gt;为什么需要汇编&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&#34;text-align:left&#34;&gt;&lt;strong&gt;逆向工程&lt;/strong&gt;&lt;/td&gt;
&lt;td style=&#34;text-align:left&#34;&gt;分析恶意软件、CrackMe，没有源码只能看汇编&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&#34;text-align:left&#34;&gt;&lt;strong&gt;系统编程&lt;/strong&gt;&lt;/td&gt;
&lt;td style=&#34;text-align:left&#34;&gt;操作系统内核、Bootloader、驱动开发&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&#34;text-align:left&#34;&gt;&lt;strong&gt;嵌入式&lt;/strong&gt;&lt;/td&gt;
&lt;td style=&#34;text-align:left&#34;&gt;MCU 资源受限，需要极致性能优化&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&#34;text-align:left&#34;&gt;&lt;strong&gt;安全研究&lt;/strong&gt;&lt;/td&gt;
&lt;td style=&#34;text-align:left&#34;&gt;漏洞利用、Shellcode 编写、ROP 链构造&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&#34;text-align:left&#34;&gt;&lt;strong&gt;性能调优&lt;/strong&gt;&lt;/td&gt;
&lt;td style=&#34;text-align:left&#34;&gt;关键热点函数手写汇编，榨干 CPU 性能&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;总结&#34;&gt;&lt;a href=&#34;#%e6%80%bb%e7%bb%93&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;总结
&lt;/h2&gt;&lt;p&gt;汇编语言不是用来和高级语言&amp;quot;抢饭碗&amp;quot;的，它是&lt;strong&gt;程序员的内功&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;学好汇编，你看代码的眼光会从&amp;quot;语法层&amp;quot;下沉到&amp;quot;机器层&amp;quot;。这是一种质的飞跃。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;下一篇：《微型计算机系统结构速览：寄存器、总线与内存》&lt;/p&gt;
&lt;/blockquote&gt;
</description>
        </item>
        
    </channel>
</rss>
