历史上的今天
返回首页

历史上的今天

今天是:2025年01月02日(星期四)

正在发生

2020年01月02日 | arm 汇编语法

2020-01-02 来源:eefocus

    area abc123, code, readonly    ;

    entry 

    code32



start

    mov r1,    #5

    mov r2, #2

    add r0, r1, r2

    end


装了个ADS 1.2; 新手不会弄,用起来超不习惯;

很要命,没关键字语法高亮!上面代码编译通过,除了mov, add 这些指令能马上分辨出来,谁能想到area这个是干什么的?


如果我把abc123改成asm 其他新人是否会误以为asm是关键字了?


要命的是,前三行和最后一行的“end”必须以制表符开头,makefile的那个制表符就很不爽了,又碰到一个这样的语法规定;

程序员在学习一样东西的时候,总是要把相当一部分的时间耗费在熟悉那古怪的难以琢磨的语法身上!!!

-------------- 等俺 那天练就一身绝学,统一所有编程语言语法,任何程序员只需要学习一种通用语法,便可到处编写;


 

其实ARM汇编应该很简单,37个寄存器,53个指令助记符;就这么点。。。

  ARM指令集:6种类型(53种主要助记符):

    1、数据处理指令(22种主要助记符)

    2、跳转指令(4种主要助记符)

    3、Load/Store指令(16种主要助记符)

    4、程序状态寄存器指令(2种主要助记符)

    5、协处理器指令(5种主要助记符)

    6、软件中断指令(2种主要助记符)


在 ARM 6(和以后)的 32 位模式下可获得的寄存器有: 


User26   SVC26    IRQ26    FIQ26      User     SVC      IRQ      ABT      UND      FIQ


R0 ----- R0 ----- R0 ----- R0 --   -- R0 ----- R0 ----- R0 ----- R0 ----- R0 ----- R1

R1 ----- R1 ----- R1 ----- R1 --   -- R1 ----- R1 ----- R1 ----- R1 ----- R1 ----- R2

R2 ----- R2 ----- R2 ----- R2 --   -- R2 ----- R2 ----- R2 ----- R2 ----- R2 ----- R2

R3 ----- R3 ----- R3 ----- R3 --   -- R3 ----- R3 ----- R3 ----- R3 ----- R3 ----- R3

R4 ----- R4 ----- R4 ----- R4 --   -- R4 ----- R4 ----- R4 ----- R4 ----- R4 ----- R4

R5 ----- R5 ----- R5 ----- R5 --   -- R5 ----- R5 ----- R5 ----- R5 ----- R5 ----- R5

R6 ----- R6 ----- R6 ----- R6 --   -- R6 ----- R6 ----- R6 ----- R6 ----- R6 ----- R6

R7 ----- R7 ----- R7 ----- R7 --   -- R7 ----- R7 ----- R7 ----- R7 ----- R7 ----- R7

R8 ----- R8 ----- R8       R8_fiq     R8 ----- R8 ----- R8 ----- R8 ----- R8       R8_fiq

R9 ----- R9 ----- R9       R9_fiq     R9 ----- R9 ----- R9 ----- R9 ----- R9       R9_fiq

R10 ---- R10 ---- R10      R10_fiq    R10 ---- R10 ---- R10 ---- R10 ---- R10      R10_fiq

R11 ---- R11 ---- R11      R11_fiq    R11 ---- R11 ---- R11 ---- R11 ---- R11      R11_fiq

R12 ---- R12 ---- R12      R12_fiq    R12 ---- R12 ---- R12 ---- R12 ---- R12      R12_fiq

R13      R13_svc  R13_irq  R13_fiq    R13      R13_svc  R13_irq  R13_abt  R13_und  R13_fiq

R14      R14_svc  R14_irq  R14_fiq    R14      R14_svc  R14_irq  R14_abt  R14_und  R14_fiq

--------- R15 (PC / PSR) ---------    --------------------- R15 (PC) ---------------------

----------------------- CPSR -----------------------

SPSR_svc SPSR_irq SPSR_abt SPSR_und SPSR_fiq


ADC  带进位的加法  -  

ADD  加法  -  

AND  逻辑与  -  

ASL  算术左移  这是一个选项,不是指令  

ASR  算术右移  这是一个选项,不是指令  

B  分支  -  

BIC  位清除  -  

BL  带连接的分支  -  

BX  分支到 Thumb 代码  StrongARM SA1110 ? 

CDP  协处理器数据操作  -  

CMN  比较取负的值  -  

CMP  比较值  -  

EOR  异或两个值  -  

LDC  装载内存到协处理器  -  

LDM  装载多个寄存器  -  

LDR  装载寄存器  -  

LDRB  装载字节到寄存器  -  

LDRH  装载半字到寄存器  StrongARM 

LDRSB  装载有符号字节到寄存器  StrongARM  

LDRSH  装载有符号半字到寄存器  StrongARM   

LSL  逻辑左移  这是一个选项,不是指令 

LSR  逻辑右移  这是一个选项,不是指令 

MCR  协处理器寄存器传送  - 

MLA  带累加的乘法  -  

MOV  传送值/寄存器到一个寄存器  -  

MRC  协处理器寄存器传送  -  

MRS  传送状态标志到一个寄存器  ARM 6  

MSR  传送一个寄存器的内容到状态标志  ARM 6  

MUL  乘法  -  

MVN  传送取负的(值)  -  

ORR  逻辑或  -  

ROR  循环右移  这是一个选项,不是指令   

RRX  带扩展的循环右移  这是一个选项,不是指令   

RSB  反向减法  -   

RSC  带借位的反向减法  -   

SBC  带借位的减法  -   

SMLAL  带累加的有符号长(64 位)乘法  StrongARM   

SMULL  有符号长(64 位)乘法  StrongARM   

STC  协处理器数据传送  -   

STM  存储多个寄存器  -   

STR  存储一个寄存器  -   

STRB  存储一个字节(从一个寄存器)  -   

STRH  存储一个半字(从一个寄存器)  StrongARM   

STRSB  存储一个有符号字节(从一个寄存器)  StrongARM   

STRSH  存储一个有符号半字(从一个寄存器)  StrongARM   

SUB  减法  -   

SWI  导致一个软件中断  -   

SWP  交换寄存器与内存  ARM 3   

TEQ  测试等价(概念上的 EOR)  -   

TST  测试并屏蔽(概念上的 AND)  -   

UMLAL  带累加的无符号长(64 位)乘法  StrongARM   

UMULL  无符号长(64 位)乘法  StrongARM   


推荐阅读

史海拾趣

Grande Electronics Ltd公司的发展小趣事
确保遥控器中的电池电量充足,避免电池电量不足导致的发射问题。
Fillfactory Nv公司的发展小趣事

2015年,FIDELIX迎来了一个重要的转折点。在这一年,东芯半导体有限公司(以下简称“东芯半导体”)正式收购了FIDELIX 25.3%的股权,成为其第一大股东及实际控制人。这一收购标志着FIDELIX开始进入一个新的发展阶段。

通过与东芯半导体的合作,FIDELIX获得了更多的资金支持和市场资源。东芯半导体是一家专注于中小容量存储芯片研发、设计和销售的中国企业,在半导体领域拥有丰富的经验和资源。双方的合作不仅为FIDELIX带来了更多的发展机会,同时也加速了FIDELIX在国际市场上的扩张步伐。

在上述两个故事的基础上,可以根据FIDELIX公司的具体发展历程、重要事件、技术创新、市场策略等方面进行进一步的拓展和补充,以形成完整、详细的故事内容。

Comchip Technology公司的发展小趣事

Comchip Technology公司于2000年在新北市莺歌区创立,创始人凭借对半导体技术的深刻理解和前瞻眼光,决定专注于二极管制造技术的研发与创新。在创立初期,公司面临资金紧张、市场竞争激烈等挑战,但凭借卓越的技术实力和坚定的信念,成功开发出了一系列高质量的二极管产品,逐渐在市场中站稳脚跟。

上海超致公司的发展小趣事

随着技术的不断积累和创新,上海超致在功率半导体领域取得了重大突破。公司成功推出了全球首款量产SJ-IGBT产品,这一产品具有电流密度大、综合器件性能优的特点,在硅基成本下实现了性能的显著提升。此外,上海超致还不断拓宽产品线,产品广泛应用于太阳能微逆变器、车载OBC、充电桩、UPS电源等多个领域。这些产品的推出不仅满足了市场的需求,也进一步提升了公司的市场竞争力。

德索五金(dosinconn)公司的发展小趣事
Compensated Devices Inc公司的发展小趣事

随着全球环保意识的日益增强,电子行业对环保的要求也越来越高。CDI积极响应这一趋势,将环保理念贯穿于产品研发、生产和销售的全过程。公司推出了一系列绿色环保型电子元件,并采用了环保材料和生产工艺。这一举措不仅赢得了客户的认可,还为公司的可持续发展奠定了坚实基础。

问答坊 | AI 解惑

上市不重要;商业模式重要

上市不重要;商业模式重要      商业模式是影响一个企业发展、融资、上市非常重要的因素。不同商业模式的企业应选择不同的上市地。反之,欲在不同地方或者同一地方不同市场上市的企业应根据自己的融资需求预先设计自己独特的 ...…

查看全部问答>

发个nrf24l01的资料加使用电路图 PCB图

买的的nrf24l01 做了个板子 调试了一下,是成功了的!!程序没传上来,有兴趣根据资料修改修改就可以啦!! 大家多多交流!!…

查看全部问答>

做Zigbee通信实验

公司里有用Cortex-M3做的,我想换一款芯片试试,具体想做什么暂时还没想好,等想好了再补上吧,暂时先占个坑,呵呵!!…

查看全部问答>

请问一个模拟电路问题

请问在基本共射放大电路里面U0=-Ic(Rc//Rl)这个式子如何来的?Rc,Rl中应该没有电流通过啊?谢谢…

查看全部问答>

要做云台解码器程序该怎么入手?

小弟最近想学习写一个监控摄像头云台解码器的程序。但不不知道如何才能入手。 不知道高手有何建议?或者有程序给小弟参考一下也可以。不胜感激。…

查看全部问答>

版主指教,二次技改,替换TMS320F2812,2407

                                 版主指教,二次技改,用STM32替换TMS320F2812,2407,用STM32哪个型号比较好?…

查看全部问答>

纳米测量电流误差解决方案

其他应对移动和振动[1]问题的解决方案包括: •除去振动源或者与振动源间在机械上解耦。电机、水泵和其他机电装置都是常见的振动源[2]。 •稳定整个测试环境。保证电子元器件、导线和电缆的稳固安装或者捆绑固定。屏蔽[3]应该保证稳 ...…

查看全部问答>

给本次ADI实验室电路DIY大赛参赛者的一点后续建议

建议获奖者包括其它未获奖者和未如期完成作品的参赛者继续改进自己的作品,这不仅仅是动手实践提高自己技术能力的一次机会,好的DIY作品本身也是一件实用的装置,善于利用的话,也许还能成为一块不错的“敲门砖”,特别是对于还是学生的参赛者,同 ...…

查看全部问答>

LPC2103外部中断0

我仿真的时候没有问题可以,把程序下到板子里问题就出来了,为什么我把触发方式设置成边沿触发,把程序下到板子里就先执行了一次中断服务程序,而我在Protues仿真的时候就是好的,我有点郁闷了。怀疑是不是硬件的原因。板子放了很久,复位按钮更奇 ...…

查看全部问答>

QT编程怎样操作ARM寄存器

请问用QT编程能直接在嵌入式linux中直接操作ARM寄存器吗?如果能,是直接在代码中操作还是要什么特殊处理?…

查看全部问答>