Skip to content

Commit

Permalink
Site updated: 2024-08-27 21:59:51
Browse files Browse the repository at this point in the history
  • Loading branch information
zhuzhuzhus committed Aug 27, 2024
1 parent 360927c commit 8c23d84
Show file tree
Hide file tree
Showing 7 changed files with 16 additions and 10 deletions.
2 changes: 1 addition & 1 deletion 2024/07/03/linux_kernel/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -259,7 +259,7 @@ <h1 class="header-author js-header-author"></h1>
<i class="icon-circle-left"></i>
<div class="article-nav-title">

系统移植篇
arm32架构

</div>
</a>
Expand Down
11 changes: 7 additions & 4 deletions 2024/08/26/arm/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -6,17 +6,17 @@
<meta name="renderer" content="webkit">
<meta http-equiv="X-UA-Compatible" content="IE=edge" >
<link rel="dns-prefetch" href="http://example.com">
<title>系统移植篇 | zhuzhuzhu&#39;s blog</title>
<title>arm32架构 | zhuzhuzhu&#39;s blog</title>
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<meta name="description" content="arm架构学习工作模式 User :用户模式,一般在执行上层应用程序的时候处于该模式(和linux用户态和内核态无关) Fiq 快速中断模式 IRQ:中断模式 SVC:当复位或执行软中断指令后arm进入这种模式(例如刚上电或者软中断执行的时候处于该模式) Abort: 当产生存取异常时进入这种模式 Undef: 当执行未定义的指令时ARM将进入这种模式 System: 使用和User">
<meta property="og:type" content="article">
<meta property="og:title" content="系统移植篇">
<meta property="og:title" content="arm32架构">
<meta property="og:url" content="http://example.com/2024/08/26/arm/index.html">
<meta property="og:site_name" content="zhuzhuzhu&#39;s blog">
<meta property="og:description" content="arm架构学习工作模式 User :用户模式,一般在执行上层应用程序的时候处于该模式(和linux用户态和内核态无关) Fiq 快速中断模式 IRQ:中断模式 SVC:当复位或执行软中断指令后arm进入这种模式(例如刚上电或者软中断执行的时候处于该模式) Abort: 当产生存取异常时进入这种模式 Undef: 当执行未定义的指令时ARM将进入这种模式 System: 使用和User">
<meta property="og:locale" content="en_US">
<meta property="article:published_time" content="2024-08-26T13:51:46.000Z">
<meta property="article:modified_time" content="2024-08-26T13:21:04.019Z">
<meta property="article:modified_time" content="2024-08-27T13:59:10.924Z">
<meta property="article:author" content="ZHUJIALE">
<meta name="twitter:card" content="summary">

Expand Down Expand Up @@ -169,7 +169,7 @@ <h1 class="header-author js-header-author"></h1>


<h1 class="article-title" itemprop="name">
系统移植篇
arm32架构
</h1>


Expand Down Expand Up @@ -332,6 +332,9 @@ <h3 id="跳转与存储器访问指令"><a href="#跳转与存储器访问指令
<p>寻址:</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br></pre></td><td class="code"><pre><span class="line">寄存器寻址:直接从寄存器拿值</span><br><span class="line">@add r1,r2,r3</span><br><span class="line">寄存器移位寻址</span><br><span class="line"></span><br><span class="line">@mov r1,r2,lsl #1 @先从r2找到要移位的数,再从机器码找到移动位数,再mov</span><br><span class="line"></span><br><span class="line">@寄存器间接寻址</span><br><span class="line">str r1,r[2]</span><br><span class="line"></span><br><span class="line">@。。。</span><br><span class="line"></span><br><span class="line">@基址加变址寻址</span><br><span class="line">mov r1,0xffffffff</span><br><span class="line">mov r2,#0x40000000</span><br><span class="line">mov r3,#4</span><br><span class="line">str r1,[r2,r3] @将r1寄存器中的数据写入到r2 + r3 指向的内存空间</span><br><span class="line"></span><br><span class="line">str r1,[r2,r3,lsl #1] @将r1寄存器的值写到r2 + r3 &lt;&lt; 1</span><br><span class="line"></span><br><span class="line">@基址加变址索引方式,前索引</span><br><span class="line">mov r1,0xffffffff</span><br><span class="line">mov r2,#0x40000000</span><br><span class="line">str r1,[r2,#8] @ 将r1寄存器的值写到r2 + 8</span><br><span class="line"> </span><br><span class="line"> @基址加变址索引方式,后索引</span><br><span class="line">mov r1,0xffffffff</span><br><span class="line">mov r2,#0x40000000</span><br><span class="line">str r1,[r2],#8 @ 将r1寄存器的值写到r2 ,并将r2加8</span><br><span class="line"> </span><br><span class="line"></span><br><span class="line">@基址加变址索引方式,自动索引</span><br><span class="line">mov r1,0xffffffff</span><br><span class="line">mov r2,#0x40000000</span><br><span class="line">str r1,[r2,#8]! @ 将r1寄存器的值写到r2 + 8,并将r2加8</span><br></pre></td></tr></table></figure>

<p>多寄存器寻址:</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br></pre></td><td class="code"><pre><span class="line">多寄存器地址访问指令</span><br><span class="line">mov r1,#1</span><br><span class="line">mov r2,#2</span><br><span class="line">mov r3,#3</span><br><span class="line">mov r4,#4</span><br><span class="line">mov r11,#0x40000020</span><br><span class="line">stm r11,&#123;r1-r4&#125; @将r1-r4寄存器的数据存储到内存以r11为起始地址的内存中</span><br><span class="line"></span><br><span class="line">ldm r11,&#123;r6-r9&#125; @将内存中以r11为起始地址的数据读取到r6 -r9的寄存器</span><br><span class="line"></span><br><span class="line">@当寄存器不连续时,使用逗号分隔</span><br><span class="line">stm r11&#123;r1,r2,r4&#125;</span><br><span class="line"></span><br><span class="line">@自动索引照样适用与多寄存器</span><br><span class="line">stm r11!,&#123;r1-r4&#125; @r11自动更新为存取后的下一块地址</span><br><span class="line"></span><br><span class="line">stma r11!,&#123;r1-r4&#125; @stm默认后缀</span><br><span class="line">stmb r11!,&#123;r1-r4&#125; @从r11+4(一个寄存器的长度)开始存储</span><br><span class="line">stmda r11!,&#123;r1-r4&#125; @往r11地址往低地址开始存储,并且将r11减去16字节(指向下一个存储单元)</span><br><span class="line">stmdb r11!,&#123;r1-r4&#125; @在r1的基础上减4个字节开始往低地址存 </span><br><span class="line"></span><br></pre></td></tr></table></figure>




Expand Down
2 changes: 1 addition & 1 deletion archives/2024/08/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -175,7 +175,7 @@ <h1 class="header-author js-header-author"></h1>


<h1 itemprop="name">
<a class="archive-article-title" href="/2024/08/26/arm/">系统移植篇</a>
<a class="archive-article-title" href="/2024/08/26/arm/">arm32架构</a>
</h1>


Expand Down
2 changes: 1 addition & 1 deletion archives/2024/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -175,7 +175,7 @@ <h1 class="header-author js-header-author"></h1>


<h1 itemprop="name">
<a class="archive-article-title" href="/2024/08/26/arm/">系统移植篇</a>
<a class="archive-article-title" href="/2024/08/26/arm/">arm32架构</a>
</h1>


Expand Down
2 changes: 1 addition & 1 deletion archives/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -175,7 +175,7 @@ <h1 class="header-author js-header-author"></h1>


<h1 itemprop="name">
<a class="archive-article-title" href="/2024/08/26/arm/">系统移植篇</a>
<a class="archive-article-title" href="/2024/08/26/arm/">arm32架构</a>
</h1>


Expand Down
2 changes: 1 addition & 1 deletion content.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
[{"title":"系统移植篇","date":"2024-08-26T13:51:46.000Z","path":"2024/08/26/arm/","tags":[]},{"title":"","date":"2024-07-03T08:27:11.631Z","path":"2024/07/03/linux_kernel/","tags":[]},{"title":"Linux驱动开发","date":"2024-02-27T12:33:25.000Z","path":"2024/02/27/Linux驱动开发/","tags":[]},{"title":"系统移植篇","date":"2024-01-18T13:51:46.000Z","path":"2024/01/18/系统移植篇/","tags":[]},{"title":"c内存管理以及链接脚本","date":"2024-01-05T07:35:22.000Z","path":"2024/01/05/c内存管理以及链接脚本/","tags":[{"name":"随笔","slug":"随笔","permalink":"http://example.com/tags/%E9%9A%8F%E7%AC%94/"}]},{"title":"ARM裸机开发","date":"2024-01-05T03:13:41.000Z","path":"2024/01/05/ARM裸机开发/","tags":[{"name":"裸机开发","slug":"裸机开发","permalink":"http://example.com/tags/%E8%A3%B8%E6%9C%BA%E5%BC%80%E5%8F%91/"}]},{"title":"Ubuntu 操作入门","date":"2024-01-05T03:13:19.000Z","path":"2024/01/05/Ubuntu-操作入门/","tags":[{"name":"一些学习嵌入式的准备工作","slug":"一些学习嵌入式的准备工作","permalink":"http://example.com/tags/%E4%B8%80%E4%BA%9B%E5%AD%A6%E4%B9%A0%E5%B5%8C%E5%85%A5%E5%BC%8F%E7%9A%84%E5%87%86%E5%A4%87%E5%B7%A5%E4%BD%9C/"}]},{"title":"嵌入式学习规划","date":"2024-01-04T16:30:01.000Z","path":"2024/01/05/1/","tags":[{"name":"学习路线的规划","slug":"学习路线的规划","permalink":"http://example.com/tags/%E5%AD%A6%E4%B9%A0%E8%B7%AF%E7%BA%BF%E7%9A%84%E8%A7%84%E5%88%92/"}]}]
[{"title":"arm32架构","date":"2024-08-26T13:51:46.000Z","path":"2024/08/26/arm/","tags":[]},{"title":"","date":"2024-07-03T08:27:11.631Z","path":"2024/07/03/linux_kernel/","tags":[]},{"title":"Linux驱动开发","date":"2024-02-27T12:33:25.000Z","path":"2024/02/27/Linux驱动开发/","tags":[]},{"title":"系统移植篇","date":"2024-01-18T13:51:46.000Z","path":"2024/01/18/系统移植篇/","tags":[]},{"title":"c内存管理以及链接脚本","date":"2024-01-05T07:35:22.000Z","path":"2024/01/05/c内存管理以及链接脚本/","tags":[{"name":"随笔","slug":"随笔","permalink":"http://example.com/tags/%E9%9A%8F%E7%AC%94/"}]},{"title":"ARM裸机开发","date":"2024-01-05T03:13:41.000Z","path":"2024/01/05/ARM裸机开发/","tags":[{"name":"裸机开发","slug":"裸机开发","permalink":"http://example.com/tags/%E8%A3%B8%E6%9C%BA%E5%BC%80%E5%8F%91/"}]},{"title":"Ubuntu 操作入门","date":"2024-01-05T03:13:19.000Z","path":"2024/01/05/Ubuntu-操作入门/","tags":[{"name":"一些学习嵌入式的准备工作","slug":"一些学习嵌入式的准备工作","permalink":"http://example.com/tags/%E4%B8%80%E4%BA%9B%E5%AD%A6%E4%B9%A0%E5%B5%8C%E5%85%A5%E5%BC%8F%E7%9A%84%E5%87%86%E5%A4%87%E5%B7%A5%E4%BD%9C/"}]},{"title":"嵌入式学习规划","date":"2024-01-04T16:30:01.000Z","path":"2024/01/05/1/","tags":[{"name":"学习路线的规划","slug":"学习路线的规划","permalink":"http://example.com/tags/%E5%AD%A6%E4%B9%A0%E8%B7%AF%E7%BA%BF%E7%9A%84%E8%A7%84%E5%88%92/"}]}]
5 changes: 4 additions & 1 deletion index.html
Original file line number Diff line number Diff line change
Expand Up @@ -260,7 +260,7 @@ <h1 itemprop="name">


<h1 itemprop="name">
<a class="article-title" href="/2024/08/26/arm/">系统移植篇</a>
<a class="article-title" href="/2024/08/26/arm/">arm32架构</a>
</h1>


Expand Down Expand Up @@ -423,6 +423,9 @@ <h3 id="跳转与存储器访问指令"><a href="#跳转与存储器访问指令
<p>寻址:</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br></pre></td><td class="code"><pre><span class="line">寄存器寻址:直接从寄存器拿值</span><br><span class="line">@add r1,r2,r3</span><br><span class="line">寄存器移位寻址</span><br><span class="line"></span><br><span class="line">@mov r1,r2,lsl #1 @先从r2找到要移位的数,再从机器码找到移动位数,再mov</span><br><span class="line"></span><br><span class="line">@寄存器间接寻址</span><br><span class="line">str r1,r[2]</span><br><span class="line"></span><br><span class="line">@。。。</span><br><span class="line"></span><br><span class="line">@基址加变址寻址</span><br><span class="line">mov r1,0xffffffff</span><br><span class="line">mov r2,#0x40000000</span><br><span class="line">mov r3,#4</span><br><span class="line">str r1,[r2,r3] @将r1寄存器中的数据写入到r2 + r3 指向的内存空间</span><br><span class="line"></span><br><span class="line">str r1,[r2,r3,lsl #1] @将r1寄存器的值写到r2 + r3 &lt;&lt; 1</span><br><span class="line"></span><br><span class="line">@基址加变址索引方式,前索引</span><br><span class="line">mov r1,0xffffffff</span><br><span class="line">mov r2,#0x40000000</span><br><span class="line">str r1,[r2,#8] @ 将r1寄存器的值写到r2 + 8</span><br><span class="line"> </span><br><span class="line"> @基址加变址索引方式,后索引</span><br><span class="line">mov r1,0xffffffff</span><br><span class="line">mov r2,#0x40000000</span><br><span class="line">str r1,[r2],#8 @ 将r1寄存器的值写到r2 ,并将r2加8</span><br><span class="line"> </span><br><span class="line"></span><br><span class="line">@基址加变址索引方式,自动索引</span><br><span class="line">mov r1,0xffffffff</span><br><span class="line">mov r2,#0x40000000</span><br><span class="line">str r1,[r2,#8]! @ 将r1寄存器的值写到r2 + 8,并将r2加8</span><br></pre></td></tr></table></figure>

<p>多寄存器寻址:</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br></pre></td><td class="code"><pre><span class="line">多寄存器地址访问指令</span><br><span class="line">mov r1,#1</span><br><span class="line">mov r2,#2</span><br><span class="line">mov r3,#3</span><br><span class="line">mov r4,#4</span><br><span class="line">mov r11,#0x40000020</span><br><span class="line">stm r11,&#123;r1-r4&#125; @将r1-r4寄存器的数据存储到内存以r11为起始地址的内存中</span><br><span class="line"></span><br><span class="line">ldm r11,&#123;r6-r9&#125; @将内存中以r11为起始地址的数据读取到r6 -r9的寄存器</span><br><span class="line"></span><br><span class="line">@当寄存器不连续时,使用逗号分隔</span><br><span class="line">stm r11&#123;r1,r2,r4&#125;</span><br><span class="line"></span><br><span class="line">@自动索引照样适用与多寄存器</span><br><span class="line">stm r11!,&#123;r1-r4&#125; @r11自动更新为存取后的下一块地址</span><br><span class="line"></span><br><span class="line">stma r11!,&#123;r1-r4&#125; @stm默认后缀</span><br><span class="line">stmb r11!,&#123;r1-r4&#125; @从r11+4(一个寄存器的长度)开始存储</span><br><span class="line">stmda r11!,&#123;r1-r4&#125; @往r11地址往低地址开始存储,并且将r11减去16字节(指向下一个存储单元)</span><br><span class="line">stmdb r11!,&#123;r1-r4&#125; @在r1的基础上减4个字节开始往低地址存 </span><br><span class="line"></span><br></pre></td></tr></table></figure>




Expand Down

0 comments on commit 8c23d84

Please # to comment.