EDA365电子论坛网

标题: Linux下的ARM汇编 [打印本页]

作者: pulbieup    时间: 2019-7-10 11:19
标题: Linux下的ARM汇编
本帖最后由 pulbieup 于 2019-7-10 11:21 编辑
! c0 U5 z9 U, B" p) ^8 @, ]
1 k# f. X. x# s# A( u  n. X第一部分 Linux下ARM汇编语法
& c" v0 d6 y; P& E1 y% {尽管在Linux下使用C或C++编写程序很方便,但汇编源程序用于系统最基本的初始化,如初始化堆栈指针、设置页表、操作ARM的协处理器等。初始化完成后就可以跳转到C代码执行。需要注意的是,GNU的汇编器遵循AT&T的汇编语法,可以从GNU的站点(gnu.org)上下载有关规范。
2 B4 h9 h  [$ b/ t+ e' y! W* P5 C0 x

- L) k1 S% [3 f/ Z" a4 R一. Linux汇编行结构0 u( ]8 P* F  z3 l3 i+ a. z
任何汇编行都是如下结构:
! b7 P! F' D9 z; ?. j6 }[:] [} @ comment
2 O! _$ h. |* x1 C: q[:] [} @ 注释
; V3 W8 w$ D1 o/ O; LLinux ARM 汇编中,任何以冒号结尾的标识符都被认为是一个标号,而不一定非要在一行的开始。6 {2 J) A' [$ P/ [0 e) b+ u
【例1】定义一个"add"的函数,返回两个参数的和。
* u/ a4 l0 h( _! I.section .text, “x”
9 k4 l/ Y+ T! j; g) l& H.global add @ give the symbol add external linkage" ]& b8 g* B( K, ?5 `8 k
add:
) v; k, \4 ^7 |1 ^. Q6 vADD r0, r0, r1  @ add input arguments
" y: g$ S: G5 i8 P. U  QMOV pc, lr @ return from subroutine
# v& x" i) f! j+ W( u@ end of program
0 ?& l; J: _. N" K4 T6 R1 e/ p! u2 p2 ~' Y
% {7 l" F! G9 r' k
二. Linux 汇编程序中的标号
! z6 u% M1 q! P- M. A
: L$ t+ M. n% \# l6 B: h1 i- {
4 w( I' n% Q3 T, p4 g; s* j6 j8 [) N

$ A" c5 h6 T* q7 [! c" l4 N3 o2 S6 R2 h# t5 O: k

3 R* O8 A# b; Q1 ^7 T
& b! m. S5 P2 `5 ?# D

. H9 S9 ~8 U6 V1 J, g  l
作者: fanichicl    时间: 2019-7-10 17:23
Linux下的ARM汇编
作者: 坐对群山青    时间: 2019-7-11 09:59
dxfx
' H, P9 p, ^7 g( a- \6 u
作者: xuzwg    时间: 2019-7-11 17:59
刚好需要Linux方面的,谢谢分享
作者: freebigfish    时间: 2019-7-16 10:23
我想看
作者: wu68aq    时间: 2019-7-16 19:00
Linux下的ARM汇编




欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) Powered by Discuz! X3.2