打印
[程序源码]

GNU汇编指令

[复制链接]
1128|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wahe2008|  楼主 | 2018-8-13 10:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
ayb_ice| | 2018-8-13 10:29 | 只看该作者
应该是中断向量定义
r2 -= 4

好像是计算PC的值

使用特权

评论回复
板凳
wahe2008|  楼主 | 2018-8-13 12:38 | 只看该作者
__isr_vector是中断向量表的标号,意思应该是求向量表中向量个数
但是.size指令怎么是这样用的.size __isr_vector, . - __isr_vector
一般代码求向量个数是这样的:__Vectors_Size  EQU     __Vectors_End - __Vectors

使用特权

评论回复
地板
john_lee| | 2018-8-13 17:38 | 只看该作者
.size 是设置那个符号的 size 属性。
符号必须是之前定义过的,比如 __isr_vector
__isr_vector:
...
.size __isr_vector, . - __isr_vector

而 EQU 是定义一个新的符号。

使用特权

评论回复
评论
wahe2008 2018-8-13 18:42 回复TA
照你所说.size是属性不是运算符号,那后面的‘-’号是什么意思 
5
john_lee| | 2018-8-13 23:14 | 只看该作者
__isr_vector:
...
.size __isr_vector, . - __isr_vector

第1行定义了符号 __isr_vector,并置该符号的“值”属性为段的当前“地址”,
第2行生成了一些代码或数据,使当前地址也随之增加了。
第3行设置符号 __isr_vector 的“大小”属性为表达式“. - __isr_vector”,. 是“段”的当前“地址”,- 是“减”,__isr_vector 是引用该符号的“值”(该值在第1行被赋予),表达式的结果就是第1行到第3行之间的代码或数据大小(按byte计)。

一个符号可以有多种属性,其中“值”是最重要也是最常用的;“大小”和“类型”也很常见,比如函数:
    .type       main, %function  
main:

    ...

    .size   main, . - main

调试器就可以从符号 main 取得它的“类型”、“值”、“大小”等属性,从而知道 main 是个函数,它的起始地址和大小。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:奋斗是一种乐趣,追求是一种动力,助人是一种储蓄,吃亏是一种积累,谦和是一种修养,宽容是一种境界,忍让

21

主题

517

帖子

6

粉丝