<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-Hans-CN">
	<id>http://wiki.foofun.cn//index.php?action=history&amp;feed=atom&amp;title=Bochs</id>
	<title>Bochs - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.foofun.cn//index.php?action=history&amp;feed=atom&amp;title=Bochs"/>
	<link rel="alternate" type="text/html" href="http://wiki.foofun.cn//index.php?title=Bochs&amp;action=history"/>
	<updated>2026-04-04T04:13:15Z</updated>
	<subtitle>本wiki上该页面的版本历史</subtitle>
	<generator>MediaWiki 1.37.1</generator>
	<entry>
		<id>http://wiki.foofun.cn//index.php?title=Bochs&amp;diff=427&amp;oldid=prev</id>
		<title>2022年2月11日 (五) 09:58 Zhang3</title>
		<link rel="alternate" type="text/html" href="http://wiki.foofun.cn//index.php?title=Bochs&amp;diff=427&amp;oldid=prev"/>
		<updated>2022-02-11T09:58:31Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;zh-Hans-CN&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;←上一版本&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;2022年2月11日 (五) 09:58的版本&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l184&quot;&gt;第184行：&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;第184行：&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==另见==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==另见==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=文章=&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;==&lt;/ins&gt;=文章&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;==&lt;/ins&gt;=&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*[[Bochs Graphics Adaptor]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*[[Bochs Graphics Adaptor]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*[[Emulator Comparison]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*[[Emulator Comparison]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Zhang3</name></author>
	</entry>
	<entry>
		<id>http://wiki.foofun.cn//index.php?title=Bochs&amp;diff=426&amp;oldid=prev</id>
		<title>2022年2月11日 (五) 09:57 Zhang3</title>
		<link rel="alternate" type="text/html" href="http://wiki.foofun.cn//index.php?title=Bochs&amp;diff=426&amp;oldid=prev"/>
		<updated>2022-02-11T09:57:25Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;zh-Hans-CN&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;←上一版本&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;2022年2月11日 (五) 09:57的版本&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l10&quot;&gt;第10行：&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;第10行：&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;您将代码指针（EIP）发送到某个未初始化的内存区域。 这意味着您要么引用了空(或未初始化)指针，要么损坏了[[Stack#Stack example on the X86 architecture|栈帧Stack Frame]]的返回地址。 你可以尝试清理您的代码，在使用指针之前测试它们，初始化每个指针 (尤其是那些在堆栈上的指针) 并在GCC中启用 *-Wall*。&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;您将代码指针（EIP）发送到某个未初始化的内存区域。 这意味着您要么引用了空(或未初始化)指针，要么损坏了[[Stack#Stack example on the X86 architecture|栈帧Stack Frame]]的返回地址。 你可以尝试清理您的代码，在使用指针之前测试它们，初始化每个指针 (尤其是那些在堆栈上的指针) 并在GCC中启用 *-Wall*。&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== 3rd exception with no resolution 未解决的第三异常===&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;=&lt;/ins&gt;== 3rd exception with no resolution 未解决的第三异常===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;这是因为CPU没有设法调用异常处理程序，通常是[[Triple Fault|triple fault|三重故障]]。 这可能是由于不良的 [[Interrupt Descriptor Table|中断描述符表IDT]] 寄存器内容，或不良的IDT描述符导致的。 有时（但不太可能），这也可能是由于异常处理程序代码中的严重错误造成的。 检查异常是否与“非法”ASM指令(如&amp;lt;tt&amp;gt;idiv 0&amp;lt;/tt&amp;gt;)一起工作，或者&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;这是因为CPU没有设法调用异常处理程序，通常是[[Triple Fault|triple fault|三重故障]]。 这可能是由于不良的 [[Interrupt Descriptor Table|中断描述符表IDT]] 寄存器内容，或不良的IDT描述符导致的。 有时（但不太可能），这也可能是由于异常处理程序代码中的严重错误造成的。 检查异常是否与“非法”ASM指令(如&amp;lt;tt&amp;gt;idiv 0&amp;lt;/tt&amp;gt;)一起工作，或者&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l85&quot;&gt;第85行：&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;第85行：&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Bochs具有一些简化调试的功能。其中许多必须通过配置开关启用:&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Bochs具有一些简化调试的功能。其中许多必须通过配置开关启用:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==GUI调试器===&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;=&lt;/ins&gt;== GUI调试器===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Bochs有一个命令行内部调试器，在此基础上还有一个图形界面。  您必须使用配置选项编译Bochs，然后编辑bochsrc文件才能启用GUI调试器。  我在bochsrc文件中使用这一行来启用X中的图形调试：&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Bochs有一个命令行内部调试器，在此基础上还有一个图形界面。  您必须使用配置选项编译Bochs，然后编辑bochsrc文件才能启用GUI调试器。  我在bochsrc文件中使用这一行来启用X中的图形调试：&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l127&quot;&gt;第127行：&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;第127行：&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Bochs在BIOS加载之前放置了一个自动断点，可以通过将 &amp;lt;tt&amp;gt;continue&amp;lt;/tt&amp;gt; 作为所述文件中的第一个命令来自动跳过该断点。&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Bochs在BIOS加载之前放置了一个自动断点，可以通过将 &amp;lt;tt&amp;gt;continue&amp;lt;/tt&amp;gt; 作为所述文件中的第一个命令来自动跳过该断点。&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==调试三重故障===&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;=&lt;/ins&gt;==调试三重故障===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;使用内部调试器时，您可以在Bochs配置文件中更改此行：&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;使用内部调试器时，您可以在Bochs配置文件中更改此行：&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l190&quot;&gt;第190行：&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;第190行：&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*[[:Category:Disk Image Utilities|类别:磁盘映像实用程序]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*[[:Category:Disk Image Utilities|类别:磁盘映像实用程序]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==外部链接===&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;=&lt;/ins&gt;==外部链接===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*[http://bochs.sourceforge.net Bochs Homepage]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*[http://bochs.sourceforge.net Bochs Homepage]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*[http://bochs.sourceforge.net/doc/docbook/user/internal-debugger.html Bochs internal debugger commands documentation]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*[http://bochs.sourceforge.net/doc/docbook/user/internal-debugger.html Bochs internal debugger commands documentation]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Zhang3</name></author>
	</entry>
	<entry>
		<id>http://wiki.foofun.cn//index.php?title=Bochs&amp;diff=425&amp;oldid=prev</id>
		<title>Zhang3：创建页面，内容为“{{Emulators}}  '''Bochs'''是一个用于x86平台的模拟器，至今它还在稳步改进中。 它极大地改善了操作系统开发，因为虚拟机的重启速度比实际硬件快得多，此外，它还提供了详细的调试功能，可以在内核开发过程中提供很大帮助。  强烈建议安装两台Bochs- 除了开箱即用的版本(可以选择二进制程序包下载)之外，您还应该编译第二个启用了内部…”</title>
		<link rel="alternate" type="text/html" href="http://wiki.foofun.cn//index.php?title=Bochs&amp;diff=425&amp;oldid=prev"/>
		<updated>2022-02-11T09:55:27Z</updated>

		<summary type="html">&lt;p&gt;创建页面，内容为“{{Emulators}}  &amp;#039;&amp;#039;&amp;#039;Bochs&amp;#039;&amp;#039;&amp;#039;是一个用于&lt;a href=&quot;/index.php?title=%E5%88%86%E7%B1%BB:X86&quot; title=&quot;分类:X86&quot;&gt;x86&lt;/a&gt;平台的模拟器，至今它还在稳步改进中。 它极大地改善了操作系统开发，因为虚拟机的重启速度比实际硬件快得多，此外，它还提供了详细的调试功能，可以在内核开发过程中提供很大帮助。  强烈建议安装两台Bochs- 除了开箱即用的版本(可以选择二进制程序包下载)之外，您还应该编译第二个启用了内部…”&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Emulators}}&lt;br /&gt;
&lt;br /&gt;
'''Bochs'''是一个用于[[Category:x86|x86]]平台的模拟器，至今它还在稳步改进中。 它极大地改善了操作系统开发，因为虚拟机的重启速度比实际硬件快得多，此外，它还提供了详细的调试功能，可以在内核开发过程中提供很大帮助。&lt;br /&gt;
&lt;br /&gt;
强烈建议安装两台Bochs- 除了开箱即用的版本(可以选择二进制程序包下载)之外，您还应该编译第二个启用了内部调试器的实例 - 因此，当您的 “正常” 调试工具无法跟踪的奇怪情况发生时，您可以将其与调试版本进行交叉检查。 您可能还希望启用（并使用）调试IO端口。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==常见的错误消息==&lt;br /&gt;
=== Running in Bogus Memory 在虚假内存中运行 ===&lt;br /&gt;
您将代码指针（EIP）发送到某个未初始化的内存区域。 这意味着您要么引用了空(或未初始化)指针，要么损坏了[[Stack#Stack example on the X86 architecture|栈帧Stack Frame]]的返回地址。 你可以尝试清理您的代码，在使用指针之前测试它们，初始化每个指针 (尤其是那些在堆栈上的指针) 并在GCC中启用 *-Wall*。&lt;br /&gt;
&lt;br /&gt;
== 3rd exception with no resolution 未解决的第三异常===&lt;br /&gt;
&lt;br /&gt;
这是因为CPU没有设法调用异常处理程序，通常是[[Triple Fault|triple fault|三重故障]]。 这可能是由于不良的 [[Interrupt Descriptor Table|中断描述符表IDT]] 寄存器内容，或不良的IDT描述符导致的。 有时（但不太可能），这也可能是由于异常处理程序代码中的严重错误造成的。 检查异常是否与“非法”ASM指令(如&amp;lt;tt&amp;gt;idiv 0&amp;lt;/tt&amp;gt;)一起工作，或者&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;asm&amp;quot;&amp;gt;&lt;br /&gt;
 push 0xf001&lt;br /&gt;
 pop ds                   ; 0xf001 is no valid segment,&lt;br /&gt;
 mov ax, ~[ds:0x12345678] ; let's see if we get the GPF&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
在某些情况下，在此之前还有其他错误消息，可以在错误中提供更多详细信息。 可能会显示的一些常见消息：&lt;br /&gt;
&lt;br /&gt;
* interrupt(): gate descriptor is not valid sys seg&lt;br /&gt;
: 您尚未加载IDT，或者IDT已损坏&lt;br /&gt;
* interrupt(): SS selector null&lt;br /&gt;
:* 您没有TSS&lt;br /&gt;
:* You haven't set SS0 / ESP0 in the TSS&lt;br /&gt;
* CR0 = 0xe0000001 CR2 = 0xe0000001&lt;br /&gt;
：* 您的分页表没有对齐页面 &lt;br /&gt;
: * 您的页表未指向正确的内存部分&lt;br /&gt;
&lt;br /&gt;
=== I/O操作数大小===&lt;br /&gt;
Bochs对I/O操作数大小执行一些相当偏执的检查。 从端口0x1234读取一个字节（8位）通常与读取32位值不同。 你需要返回去查芯片data sheet，仔细检查大小是否正确。&lt;br /&gt;
&lt;br /&gt;
=== fetch_raw_descriptor: LDTR.valid=0 ===&lt;br /&gt;
许多人都说 “可是... 我没有LDT，我读到它不是强制性的！？“。 你是对的。 Bochs也没错。 这个消息通常意味着你的程序试图加载一个带有垃圾值的选择器，而这个垃圾值恰好设置了第三位（表指示符Table Indicator ）。 CPU会尝试查找LDT中的描述符，但实际没有注册LDT！ 在大多数情况下，错误来自堆栈上的push和pop的一些错误配对，这导致非选择器值被加载到段寄存器中。&lt;br /&gt;
&lt;br /&gt;
如果你仍然卡住了，下载Bochs源代码包并搜索你收到的消息。 然后，也许您可以向消息打印代码添加额外的信息(如段错误的错误偏移量、段限制等)。 但是不要修改bochs的操作! 每次我怀疑Bochs中有漏洞，都只是我误解了英特尔手册...&lt;br /&gt;
&lt;br /&gt;
==Bochs和真实硬件之间的差异==&lt;br /&gt;
; Bochs启用BIOS中的A20线路&lt;br /&gt;
:您的PC不一定会这样做。 有的PC有BIOS选项可以打开，有的没有。 检查启用A20线路的代码，确保其与更快的硬件没有问题。&lt;br /&gt;
&lt;br /&gt;
;Bochs会抹除它的内存&lt;br /&gt;
:在Bochs中，在您（或BIOS）放入其他内容之前，内存始终为零。 在普通PC上，未初始化的内存往往包含垃圾(通常是全1)或以前执行的痕迹。 检查你的指针，初始化它们，必要时在纸上打印你的代码。&lt;br /&gt;
&lt;br /&gt;
;Bochs无法正确模拟CPU cache缓存/TLB&lt;br /&gt;
：尽管Bochs确实具有这些构造，但它们的工作方式与常规CPU缓存或TLB不同，并且不会根据正在仿真的CPU进行更改。  如果未正确处理缓存或TLB刷新，Bochs和硬件的行为可能会有所不同（即，它可能在Bochs上工作，但在硬件上不工作，反之亦然）。&lt;br /&gt;
&lt;br /&gt;
;Bochs软盘没有错误&lt;br /&gt;
:在物理PC中，通常在扇区/磁道上发出最多3次读取尝试命令，然后才能进行良好读取。 如果您的引导扇区中没有正确的错误检查/恢复，您很可能会运行一些不是您的内核的东西……&lt;br /&gt;
&lt;br /&gt;
; Bochs对于返回实模式很灵活&lt;br /&gt;
:不管Chris Giese的保护模式教程说明了什么，您不必处于16位保护模式才能清除CR0的PE位。 如果您未能在真实PC上进入16位保护模式，它将挂起，而不会给出任何错误指示-没有三重故障或任何东西!&lt;br /&gt;
&lt;br /&gt;
;Bochs上的计时不是真实耗时&lt;br /&gt;
:(除非您将其配置得更接近实时)。 假如在bochs上等待2秒，打算让那些需要2秒才能准备好的虚拟设备准备就绪，但这可能对您来说只有0.02秒...或者可能是200秒。&lt;br /&gt;
&lt;br /&gt;
附加 &lt;br /&gt;
 clock: sync=realtime, time0=local&lt;br /&gt;
将导致中断在实际时间间隔，但可能会让OS与PIT中断过载，导致堆栈溢出 (如果它是pre-emptible抢先的) 使用&amp;lt;tt&amp;gt;sync=slook&amp;lt;/tt&amp;gt;也会将其设置为实时速度，只是每个虚拟秒之间的虚拟时钟周期是恒定的。 如果需要减速和模拟原始时钟，您需要去设置每秒执行的指令量。&lt;br /&gt;
&lt;br /&gt;
;CPU始终是Intel/AMD&lt;br /&gt;
:Bochs模拟CPU，因此CPUID将始终报告为Intel（如果模拟32位系统）或AMD（如果模拟64位系统）报告，而不管系统中到底有什么。&lt;br /&gt;
较新版本的Bochs允许您在CPU标记中指定供应商字符串：&lt;br /&gt;
 cpu: vendor_string=&amp;quot;test        &amp;quot;&lt;br /&gt;
 #必须是12个字符的ASCII字符串！&lt;br /&gt;
&lt;br /&gt;
==Bochs映像文件扼要==&lt;br /&gt;
&lt;br /&gt;
要使用Bochs引导您的自定义内核，请在bochsrc配置文件中搜索 “floppya” 和 “boot” 行。 以下配置允许您使用计算机的“真实”软盘驱动器并从中启动：&lt;br /&gt;
&lt;br /&gt;
 floppya: 1_44=/dev/fd0, status=inserted&lt;br /&gt;
 boot: floppy&lt;br /&gt;
&lt;br /&gt;
对于Windows用户，应显示为:&lt;br /&gt;
&lt;br /&gt;
 floppya: 1_44=a:, status=inserted&lt;br /&gt;
 boot: floppy&lt;br /&gt;
&lt;br /&gt;
但是这太慢了，当你处于一个紧凑的修改-构建-启动周期时，会给软盘带来很大的压力。 Bochs提供了映像文件的使用方法，包括创建映像文件的交互式工具 (bximage.exe)。 请注意，即使映像是设备而不是常规文件，Bochs也会模拟软盘的内部结构。。。&lt;br /&gt;
&lt;br /&gt;
==Bochs调试设施==&lt;br /&gt;
Bochs具有一些简化调试的功能。其中许多必须通过配置开关启用:&lt;br /&gt;
&lt;br /&gt;
==GUI调试器===&lt;br /&gt;
Bochs有一个命令行内部调试器，在此基础上还有一个图形界面。  您必须使用配置选项编译Bochs，然后编辑bochsrc文件才能启用GUI调试器。  我在bochsrc文件中使用这一行来启用X中的图形调试：&lt;br /&gt;
&lt;br /&gt;
  display_library: x, options=&amp;quot;gui_debug&amp;quot;&lt;br /&gt;
&lt;br /&gt;
在Windows环境中，将此行添加到您的bochsrc.bxrc&lt;br /&gt;
&lt;br /&gt;
  display_library: win32, options=&amp;quot;gui_debug&amp;quot;&lt;br /&gt;
&lt;br /&gt;
在Windows上，“option”标志(上面一行用来读取的内容)似乎会被接受，但GUI窗口不会出现。&lt;br /&gt;
&lt;br /&gt;
=== I/O调试器宏 ===&lt;br /&gt;
在启用I/O调试端口的情况下编译Bochs时，一些有用的宏（如果是Bochs 2.4或更新版本， &amp;lt;tt&amp;gt;port_e9_hack:enabled=1，如果没有可以试试 &amp;lt;tt&amp;gt;configure --port-e9-hack&amp;lt;/tt&amp;gt;）：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 //outputs a character to the debug console&lt;br /&gt;
 #define BochsConsolePrintChar(c) outportb(0xe9, c)&lt;br /&gt;
 //stops simulation and breaks into the debug console&lt;br /&gt;
 #define BochsBreak() outportw(0x8A00,0x8A00); outportw(0x8A00,0x08AE0);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Magic Breakpoint ===&lt;br /&gt;
当您将Bochs与 [http://bochs.sourceforge.net/doc/docbook/user/internal-debugger.html 内部调试器] 一起使用时，您可以通过名为 [http://bochs.sourceforge.net/doc/docbook/user/bochsrc.html#AEN2324 Magic Breakpoint] 的工具触发调试器。 要触发断点，可以在代码中的任意位置插入 &amp;lt;tt&amp;gt;xchg bx, bx&amp;lt;/tt&amp;gt;（在GAS语法中是，&amp;lt;tt&amp;gt;xchgw %bx, %bx&amp;lt;/tt&amp;gt;），Bochs将在调试器执行它时立即捕获到调试器中。 在实际硬件上，这不起作用，因为它只是用自身替换BX寄存器。&lt;br /&gt;
&lt;br /&gt;
您应该在Bochs配置文件中放入以下行，让它侦听magic breakpoint：&lt;br /&gt;
 magic_break: enabled=1&lt;br /&gt;
&lt;br /&gt;
在旧版本上，仅启用调试器无法在magic breakpoint支持下编译，在这些版本上配置构建时，还需要指定 lt;tt&amp;gt;--enable-magic-breakpoint&amp;lt;/tt&amp;gt; 。&lt;br /&gt;
&lt;br /&gt;
===调试SMP===&lt;br /&gt;
使用内部调试器时，可以使用以下命令切换CPU:&lt;br /&gt;
&lt;br /&gt;
  set $cpu = &amp;lt;n&amp;gt;&lt;br /&gt;
&lt;br /&gt;
我还发现这在GUI调试器中有时是必要的，即使它为每个CPU都有按钮。&lt;br /&gt;
&lt;br /&gt;
=== 内部调试器命令 ===&lt;br /&gt;
&lt;br /&gt;
您可以传递一个包含调试命令的文件，以便在使用内部调试器启动bochs时自动运行。  (bochs -rc &amp;lt;file&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
Bochs在BIOS加载之前放置了一个自动断点，可以通过将 &amp;lt;tt&amp;gt;continue&amp;lt;/tt&amp;gt; 作为所述文件中的第一个命令来自动跳过该断点。&lt;br /&gt;
&lt;br /&gt;
==调试三重故障===&lt;br /&gt;
&lt;br /&gt;
使用内部调试器时，您可以在Bochs配置文件中更改此行：&lt;br /&gt;
&lt;br /&gt;
 reset_on_triple_fault 0&lt;br /&gt;
&lt;br /&gt;
这一行在三重故障时禁用模拟器的重置，使您能够在三重故障发生后调试代码（在实现分页时非常有用）。&lt;br /&gt;
==从源代码编译Bochs==&lt;br /&gt;
Bochs有许多编译时配置选项，其中一些选项冲突，因此Bochs的二进制版本可能不适合您的目的。  我发现最好是编译自己的Bochs副本，以确保自己定制所需的功能。  此外，如果发布的版本较旧并且不适合您，您应该考虑使用Bochs的CVS快照版本。  例如我直到版本2.4发布都一直觉得这样做很有必要。  在Ubuntu上，你可能需要运行&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
  sudo apt-get install libgtk2.0-dev&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
并输入您的密码。在其他Linux发行版上，请尝试类型操作。&lt;br /&gt;
&lt;br /&gt;
Bochs配置选项的清单可能会令人困惑，假如您不认为默认值是明智的。这些是我使用的选项，你可以考虑参考:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
  ./configure --enable-smp \&lt;br /&gt;
              --enable-cpu-level=6 \&lt;br /&gt;
              --enable-all-optimizations \&lt;br /&gt;
              --enable-x86-64 \&lt;br /&gt;
              --enable-pci \&lt;br /&gt;
              --enable-vmx \&lt;br /&gt;
              --enable-debugger \&lt;br /&gt;
              --enable-disasm \&lt;br /&gt;
              --enable-debugger-gui \&lt;br /&gt;
              --enable-logging \&lt;br /&gt;
              --enable-fpu \&lt;br /&gt;
              --enable-3dnow \&lt;br /&gt;
              --enable-sb16=dummy \&lt;br /&gt;
              --enable-cdrom \&lt;br /&gt;
              --enable-x86-debugger \&lt;br /&gt;
              --enable-iodebug \&lt;br /&gt;
              --disable-plugins \&lt;br /&gt;
              --disable-docbook \&lt;br /&gt;
              --with-x --with-x11 --with-term --with-sdl2&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
几点注意事项&lt;br /&gt;
* 如果您使用的是Windows，则最后一行可能应为“--with-Win32”。&lt;br /&gt;
* 在Linux上，最好使用SDL作为X11的显示库，因为在某些设置下性能似乎会大大提高&lt;br /&gt;
* Bochs支持GDB stub，并有自己的内部调试器。  这些不能编译成相同的Bochs二进制文件。  内部调试器非常有用，它的标志是 --enable-debugger&lt;br /&gt;
* Bochs中的GDB stub不支持SMP，上次我检查过。&lt;br /&gt;
* 如果不启用PCI，则Intel多处理表将不会出现在内存中。&lt;br /&gt;
* 如果不指定&amp;lt;tt&amp;gt;--disable-plugins&amp;lt;/tt&amp;gt;，就无法成功加载GUI调试器。  否则，就会出现动态加载符号错误。&lt;br /&gt;
* 2.4.2版之后的几个特定于CPU的选项已合并到CPU级别规范中，因此已弃用。它们已从上面的示例中删除。&lt;br /&gt;
* 默认编译不支持x86-64，-enable-x86-64选项会将其打开&lt;br /&gt;
* 在许多Linux发行版上，可以通过软件包管理器安装Bochs。 例如，在使用apt-get的发行版上，我们可以这样做&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
  sudo apt-get install bochs&lt;br /&gt;
  sudo apt-get install bochs-x&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
要安装Bochs和X11插件(可能会在ubuntu/Linux mint上崩溃：安装SDL插件并使用SDL而不是x作为显示库)。 请注意，在包管理器的二进制文件中未启用图形调试器的可能性很大。&lt;br /&gt;
&lt;br /&gt;
==另见==&lt;br /&gt;
=文章=&lt;br /&gt;
*[[Bochs Graphics Adaptor]]&lt;br /&gt;
*[[Emulator Comparison]]&lt;br /&gt;
*[[GDB]]&lt;br /&gt;
*[[:Category:Disk Image Utilities|类别:磁盘映像实用程序]]&lt;br /&gt;
&lt;br /&gt;
==外部链接===&lt;br /&gt;
*[http://bochs.sourceforge.net Bochs Homepage]&lt;br /&gt;
*[http://bochs.sourceforge.net/doc/docbook/user/internal-debugger.html Bochs internal debugger commands documentation]&lt;br /&gt;
*[http://www.codeproject.com/system/MakingOS_2.asp CodeProject article on using Bochs]&lt;br /&gt;
&lt;br /&gt;
[[Category:Emulators]]&lt;br /&gt;
[[de:Bochs]]&lt;/div&gt;</summary>
		<author><name>Zhang3</name></author>
	</entry>
</feed>