<divid="app"><divclass="Layout"data-v-5d98c3a5><!--[--><!--]--><!--[--><spantabindex="-1"data-v-0f60ec36></span><ahref="#VPContent"class="VPSkipLink visually-hidden"data-v-0f60ec36> Skip to content </a><!--]--><!----><headerclass="VPNav"data-v-5d98c3a5data-v-ae24b3ad><divclass="VPNavBar has-sidebar top"data-v-ae24b3addata-v-6aa21345><divclass="wrapper"data-v-6aa21345><divclass="container"data-v-6aa21345><divclass="title"data-v-6aa21345><divclass="VPNavBarTitle has-sidebar"data-v-6aa21345data-v-ab179fa1><aclass="title"href="/c/"data-v-ab179fa1><!--[--><!--]--><!--[--><imgclass="VPImage logo"src="/c/logo.svg"altdata-v-8426fc1a><!--]--><spandata-v-ab179fa1>许大仙</span><!--[--><!--]--></a></div></div><divclass="content"data-v-6aa21345><divclass="content-body"data-v-6aa21345><!--[--><!--]--><divclass="VPNavBarSearch search"data-v-6aa21345><!--[--><!----><divid="local-search"><buttontype="button"class="DocSearch DocSearch-Button"aria-label="Search"><spanclass="DocSearch-Button-Container"><spanclass="vp-icon DocSearch-Search-Icon"></span><spanclass="DocSearch-Button-Placeholder">Search</span></span><spanclass="DocSearch-Button-Keys"><kbdclass="DocSearch-Button-Key"></kbd><kbdclass="DocSearch-Button-Key">K</kbd></span></button></div><!--]--></div><navaria-labelledby="main-nav-aria-label"class="VPNavBarMenu menu"data-v-6aa21345data-v-dc692963><spanid="main-nav-aria-label"class="visually-hidden"data-v-dc692963> Main Navigation </span><!--[--><!--[--><aclass="VPLink link vp-external-link-icon VPNavBarMenuLink"href="https://aexiar.github.io/"target="_blank"rel="noreferrer"tabindex="0"data-v-dc692963data-v-9c663999><!--[--><spandata-v-9c663999>首页</span><!--]--></a><!--]--><!--[--><aclass="VPLink link vp-external-link-icon VPNavBarMenuLink"href="https://aexiar.github.io/coa6/notes/"target="_blank"rel="noreferrer"tabindex="0"data-v-dc692963data-v-9c663999><!--[--><spandata-v-9c663999>计组6件套</span><!--]--></a><!--]--><!--[--><divclass="VPFlyout VPNavBarMenuGroup"data-v-dc692963data-v-b6c34ac9><buttontype="button"class="button"aria-haspopup="true"aria-expanded="false"data-v-b6c34ac9><spanclass="text"data-v-b6c34ac9><!----><spandata-v-b6c34ac9>编程语言</span><spanclass="vpi-chevron-down text-icon"data-v-b6c34ac9></span></span></button><divclass="menu"data-v-b6c34ac9><divclass="VPMenu"data-v-b6c34ac9data-v-b98bc113><divclass="items"data-v-b98bc113><!--[--><!--[--><divclass="VPMenuLink"data-v-b98bc113data-v-43f1e123><aclass="VPLink link"href="/c/notes/"data-v-43f1e123><!--[-->c/c++<!--]--></a></div><!--]--><!--[--><divclass="VPMenuLink"data-v-b98bc113data-v-43f1e123><aclass="VPLink link vp-external-link-icon"href="https://aexiar.github.io/web-design/notes/"target="_blank"rel="noreferrer"data-v-43f1e123><!--[-->前端<!--]--></a></div><!--]--><!--[--><divclass="VPMenuLink"data-v-b98bc113data-v-43f1e123><aclass="VPLink link vp-external-link-icon"href="https://aexiar.github.io/java/notes/"target="_blank"rel="noreferrer"data-v-43f1e123><!--[-->Java<!--]--></a></div><!--]--><!--[--><divclass="VPMenuLink"data-v-b98bc113data-v-43f1e123><aclass="VPLink link vp-external-link-icon"href="https://aexiar.github.io/big-data/notes/"target="_blank"rel="noreferrer"data-v-43f1e123><!--[-->大数据<!--]--></a></div><!--]--><!--[--><divclass="VPMenuLink"data-v-b98bc113data-v-43f1e123><aclass="VPLink link vp-external-link-icon"href="https://aexiar.github.io/linux/notes/"target="_blank"rel="noreferrer"data-v-43f1e123><!--[-->云原生<!--]--></a></div><!--]--><!--[--><divclass="VPMenuLink"data-v-b98bc113data-v-43f1e123><aclass="VPLink link vp-external-link-icon"href="https://aexiar.github.io/go/notes/"target="_blank"rel="noreferrer"data-v-43f1e123><!--[-->Go<!--]--></a></div><!--]--><!--[--><divclass="VPMenuLink"data-v-b98bc113data-v-43f1e123><aclass="VPLink link vp-external-link-icon"href="https://aexiar.github.io/python/notes/"target="_blank"rel="noreferrer"data-v-43f1e123><!--[-->Python<!--]--
<spanclass="line"><spanstyle="--shiki-light:#D73A49;--shiki-dark:#F97583;"> int</span><spanstyle="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> a </span><spanstyle="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><spanstyle="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> 10</span><spanstyle="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">; </span><spanstyle="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// 用户态</span></span>
<spanclass="line"><spanstyle="--shiki-light:#D73A49;--shiki-dark:#F97583;"> int</span><spanstyle="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> b </span><spanstyle="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><spanstyle="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> 20</span><spanstyle="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">; </span><spanstyle="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// 用户态</span></span>
<spanclass="line"><spanstyle="--shiki-light:#D73A49;--shiki-dark:#F97583;"> int</span><spanstyle="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> c </span><spanstyle="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><spanstyle="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> a </span><spanstyle="--shiki-light:#D73A49;--shiki-dark:#F97583;">+</span><spanstyle="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> b; </span><spanstyle="--shiki-light:#6A737D;--shiki-dark:#6A737D;">// 用户态</span></span>
<spanclass="line"><spanstyle="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre><divclass="line-numbers-wrapper"aria-hidden="true"><spanclass="line-number">1</span><br><spanclass="line-number">2</span><br><spanclass="line-number">3</span><br><spanclass="line-number">4</span><br><spanclass="line-number">5</span><br><spanclass="line-number">6</span><br><spanclass="line-number">7</span><br><spanclass="line-number">8</span><br><spanclass="line-number">9</span><br><spanclass="line-number">10</span><br><spanclass="line-number">11</span><br><spanclass="line-number">12</span><br><spanclass="line-number">13</span><br><spanclass="line-number">14</span><br><spanclass="line-number">15</span><br><spanclass="line-number">16</span><br><spanclass="line-number">17</span><br><spanclass="line-number">18</span><br><spanclass="line-number">19</span><br><spanclass="line-number">20</span><br><spanclass="line-number">21</span><br><spanclass="line-number">22</span><br><spanclass="line-number">23</span><br><spanclass="line-number">24</span><br><spanclass="line-number">25</span><br><spanclass="line-number">26</span><br><spanclass="line-number">27</span><br><spanclass="line-number">28</span><br><spanclass="line-number">29</span><br></div></div><h3id="_1-4-3-isa、abi-和-api"tabindex="-1">1.4.3 ISA、ABI 和 API <aclass="header-anchor"href="#_1-4-3-isa、abi-和-api"aria-label="Permalink to "1.4.3 ISA、ABI 和 API""></a></h3><ul><li>ISA 、ABI 和 API 的参考模型如下:</li></ul><p><imgsrc="/c/assets/12.Bvs6QYjl.jpg"alt=""loading="lazy"></p><ul><li>在底层,硬件模型以指令集架构 (ISA) 表示,该架构定义了处理器、寄存器、存储器和中断管理的指令集。ISA 是硬件和软件之间的接口,对于操作系统 (OS) 开发人员 (System ISA) 和直接管理底层硬件的应用程序 (User ISA) 的开发人员来说非常重要。</li></ul><divclass="note custom-block github-alert"><pclass="custom-block-title">NOTE</p><p></p><ul><li>① ISA 是计算机体系结构中定义的一组指令,它规定了处理器能够执行的操作。ISA 包括指令的编码、寄存器的使用、内存访问模式等。不同的处理器可能有不同的 ISA,例如:x86、ARM、MIPS 等。</li><li>② 在设计一个新的操作系统时,开发者需要确保操作系统能够支持特定的 ISA ,以便在特定的硬件上运行。例如:如果操作系统旨在运行在 ARM 架构的处理器上,那么它必须能够理解和执行 ARM ISA 定义的指令集。</li></ul></div><ul><li>应用程序二进制接口 (ABI) 将<code>操作系统层</code>与由操作系统管理的<code>应用程序</code>和<code>库</code>分开。ABI 涵盖了低级数据类型、对齐方式和调用约定等详细信息,并定义了可执行程序的格式。系统调用在此级别定义。此接口允许应用程序和库在实现相同 ABI 的操作系统之间移植。</li></ul><divclass="note custom-block github-alert"><pclass="custom-block-title">NOTE</p><p></p><ul><li>① ABI 是指在二进制级别上,应用程序与操作系统、库或应用程序的不同部分之间的接口。它定义了数据类型的大小、布局、对齐方式,以及函数调用的约定(如参数如何传递、返回值如何处理等)。ABI 确保了编译后的二进制文件能够在特定的操作系统和硬件平台上正确地运行。</li><li>② 在 windows 上的应用程序的运行格式是:<code>PE</code>(portable executable)格式、<code>.dll</code>(dynamic link library)格式和 <code>.lib</code> 格式;而在 Linux 上的应用程序的运行格式是:<code>ELF</code>(executable and linking format)格式、<code>.so</code>(shared object)格式和 <code>.a</code> 格式。</li><li>③ 在 Linux 中可以通过 <code>file /bin/ls</code> 命令查看指定可执行应用程序的 ABI 格式;从而也可以论证,在 Windows 上可以运行的程序,在 Linux 上运行不了。</li><li><EFBFBD><EFBFBD>