[应用相关] 启动代码 汇编指令的一些伪操作总结(基于RealView)

[复制链接]
2464|43
 楼主| gaoke231 发表于 2019-2-23 18:29 | 显示全部楼层
IF ELSE ENDIF
IF ELSE ENDIF类似C语言的条件编译,根据条件把一段代码包括在汇编语言内,或者将其排除在程序之外。为了书写方便,往往为了书写方便在实际程序中用符号表示。
“[“  IF的同义词  “|” ELSE的同义词  “]” ENDIF的同义词
语法格式:IF  条件表达式
           执行程序段
          {ELSE
           执行程序段
}
ENDIF

 楼主| gaoke231 发表于 2019-2-23 18:30 | 显示全部楼层
你瞅啥 发表于 2019-2-23 17:24
都可以个屁!
都可以STM32的库文件就不会有2个汇编启动文件对应gcc和realview编译器了,因为iar可以用内 ...

题目已经改过来了
你瞅啥 发表于 2019-2-23 18:37 | 显示全部楼层
ARM的编译器有三大系列,ARM官方自己的编译器部门RealView出的编译器,Keil曾经搞过ARM编译器但是被ARM收购后就彻底废止开发,现在MDK内嵌的就是RealView编译器,Keil只负责外壳的开发。
另一个系列是GCC,有ARM官方资助的,还有codesourcery、bare-metel一类的变种,但是语法都是一样的。ARM官方的开发工具DS-5在其收费版本中用的是RealView编译器,免费社区版用的是GCC。
再一个就是独立的IAR编译器。
 楼主| gaoke231 发表于 2019-2-23 18:43 | 显示全部楼层
你瞅啥 发表于 2019-2-23 18:37
ARM的编译器有三大系列,ARM官方自己的编译器部门RealView出的编译器,Keil曾经搞过ARM编译器但是被ARM收购 ...

学习了,对于编译器不是很了解,用的最多就是keil  mdk  学习51 stm32 用过  
 楼主| gaoke231 发表于 2019-2-23 18:44 | 显示全部楼层
你瞅啥 发表于 2019-2-23 18:37
ARM的编译器有三大系列,ARM官方自己的编译器部门RealView出的编译器,Keil曾经搞过ARM编译器但是被ARM收购 ...

现在想学习下嵌入式,看到了一些汇编的基础
 楼主| gaoke231 发表于 2019-2-23 18:45 | 显示全部楼层
MACRO MEND
     MACRO用于标识宏定义的开始,MEND用于标识宏定义的结束。用MACROMEND定义一段代码,称为宏定义体。程序中通过宏指令就可以多次调用该代码段。
语法格式: MACRO
            {$lable} Macroname {$parameter{,$parameter{,$parameter}...}
            ;code
            ...
            ;code
           MEND
{$lable}展开时lable可被换成相应的符号,在一个符号前使用$标示程序被汇编时使用相应的值来代替$后的符号。

 楼主| gaoke231 发表于 2019-2-23 18:50 | 显示全部楼层
EQU
EQU用于数字常量、基于寄存器的值和程序中的标号定义一个字符名称。
语法格式: name  EQU  expr
name是定义的字符名称。expr是寄存器的地址值。

john_lee 发表于 2019-2-23 18:52 | 显示全部楼层
用GCC直接用C写启动文件,不需要用汇编。
 楼主| gaoke231 发表于 2019-2-23 18:53 | 显示全部楼层
john_lee 发表于 2019-2-23 18:52
用GCC直接用C写启动文件,不需要用汇编。

是的,学习嵌入式还是需要看一些汇编文件的
 楼主| gaoke231 发表于 2019-2-23 19:06 | 显示全部楼层
MAP
MAP用于定义一个结构化的内存表的首地址,“^”是MAP的同义词。
语法格式:MAP  expr {,base-register}
expr 为数字表达式或程序中的标号。base-register为一个寄存器。

 楼主| gaoke231 发表于 2019-2-23 19:07 | 显示全部楼层
FIELD
   FIELD用于定义一个结构化内存表中的结构域 “#”是FIELD的同义词。
语法格式:{lable}  FIELD  expr

john_lee 发表于 2019-2-23 19:44 | 显示全部楼层
学习是可以,但过时的东西还是不要学了。
arm rvct已经开始放弃armcc而转向clang,mbed也不支持armcc了。你贴的内容都是armcc对应的armasm汇编语法,而clang对应的汇编语法是GNU汇编语法。
小明的同学 发表于 2019-2-24 09:33 | 显示全部楼层
多谢分享,以前遇到这个我都跳开了,看不懂
 楼主| gaoke231 发表于 2019-2-24 17:52 | 显示全部楼层
小明的同学 发表于 2019-2-24 09:33
多谢分享,以前遇到这个我都跳开了,看不懂

我也是不太懂,看这个总结的还可以
 楼主| gaoke231 发表于 2019-2-24 17:53 | 显示全部楼层
john_lee 发表于 2019-2-23 19:44
学习是可以,但过时的东西还是不要学了。
arm rvct已经开始放弃armcc而转向clang,mbed也不支持armcc了。你 ...

是的,是有点过时了,新的资料还是不太好找
renzheshengui 发表于 2019-3-7 10:50 | 显示全部楼层
感谢楼主分享 不过我看不太明白
wakayi 发表于 2019-3-7 10:53 | 显示全部楼层
非常感谢楼主分享
wowu 发表于 2019-3-7 10:56 | 显示全部楼层
楼主讲解非常详细
643757107 发表于 2019-3-7 11:23 | 显示全部楼层
当高手必须懂
 楼主| gaoke231 发表于 2019-3-14 23:00 | 显示全部楼层
renzheshengui 发表于 2019-3-7 10:50
感谢楼主分享 不过我看不太明白

学习linux必备知识,以后会懂的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部