zoukankan      html  css  js  c++  java
  • 汇编指令和操作

    1 ldr伪指令有两种用途。
    (1)当需要读取到寄存器中的数据超过了MOV,及MVN指令可以操作的范围时,可以使用LDR伪指令将该数据读取到寄存器中。
    (2)还未用到。
    2 ldr r0,=0x5300000 (把0x5300000下载到r0中)
    mov r1,#0
    str r1,[r0] (把r1的数据下载到r0中的地址对应的空间,这就是[]的作用)
    3
    @ 手动设置CPU模式为irq模式

    mrs r0,cpsr

    bic r0,r0,#0x1F
    (清0,先将0x1f取反,低5位变为00000,然后与r0 与运算放到r0中。)
    orr r0,r0,#0x12
    (清0,先将0x1f取反低5位变为00000, 然后与r0 或运算放到r0中。)
    msr cpsr_c,r0 (cpsr中的低8位,,)
    涉及到cpsr,spsr,时都用mrs(读状态),msr(写状态)
    4 伪指令本身也是指令,只是这条指令能识别不会直接翻译,会把他翻译成其他的机器代码。伪指令为了一些一条指令无法完成的指令。

    5 .global _start 伪操作,不会翻译成机器指令,使程序可读性强,类似于C语言中的#号。规GUN ARM汇编器识别。
    6 不同的汇编器对汇编语言的语法要求有所不同,目前常用的ARM汇编环境有一下两种。
    ARM 汇编 (armasm ARM公司,绝大果树的windows下的开发者都在使用这一环境,他的语法完全按照ARM的规定)
    GUN ARM汇编(GUN 计划) GUN交叉编译工具链中的汇编器,所采用的语法与armasm略有不同,LINUX下的开发者一般用这种环境)
    7 .global _start
    @ 扩展niuniu这个函数的作用域(扩展 出去)

    .extern niuniu
    (扩展进来)
    .extern doirq
    8 @ 代码段的结束
    .end
    9 b 20 的计算方式
    0: ea000006 b 20 <reset>
    16进制的6加两个0,变为6,变为10进制,
    10 _start:
    (程序的真正开始)
    @ 0地址处存储(sram)的机器代码

    @ 相当于C语言中的goto reset

    b reset

    nop

    nop

    nop

    nop

    nop

    b irqhandle

    nop
    11 ldr sp,=0x1000;(这两个sp不同,因为不同的用户空间的sp独立的寄存器, 最大4K,所以0x1000)
    ldr sp,0xf00;
    12 @ cpu默认是关闭irq中断的,打开irq中断

    mrs r0,cpsr

    bic r0,r0,#0xC0
    (清他的7和6位使中断irq,fiq使能)
    msr cpsr_c,r0
    13 汇编语言的16进制表示,英文表示。
    31 30 29 28 27 26 25 24 23 ....0
    头4位的a 1010表示无条件执行。24 L位,1表示返回,0表示不返回。
    14 -32M +32M 2的26次方=64M;
    15 正数的补码仍然是正数。负数的补码取反加1
    16 流水线,3级取指令,译码,执行。
    17 PC存的是正在预取得指令。
    18 复位以后自动到了特权模式。
    19 reset:

    @ cpu默认打开看门狗,关闭看门狗

    ldr r0,=0x53000000

    mov r1,#0

    str r1,[r0]
    reset对应的地址总线,是下一条指令的地址总线的地址。
    20 字32位,半字,16位。
    21 b地址跳转
    60: ea00005c b 1d8
    5c->92,0x60+8->104,
    92*4+104=472->0x1d8;

  • 相关阅读:
    监听Windows消息
    把遇到过的对.Net线程的一些问题和误解集中起来和大家分享,也希望大家能一起补充,热烈欢迎讨论(转)
    推荐一个好工具:P/Invoke Interop Assistant (转)
    其它操作EDM的方式 (转载)
    DotNet(C#)自定义运行时窗体设计器 一
    通过监听Windows消息对复合控件进行整体控制(C#)一
    DotNet(C#)自定义运行时窗体设计器Runtime FormDesigner(转载)
    C# 枚举中的位运算
    Linux下cat 命令
    小端字节序与大端字节序
  • 原文地址:https://www.cnblogs.com/coding4/p/5604784.html
Copyright © 2011-2022 走看看