打印
[技术问答]

M0 CMSIS内部函数内嵌汇编指令一览表

[复制链接]
2052|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主

沙发
niuyaliang|  楼主 | 2014-2-20 12:50 | 只看该作者

使用特权

评论回复
板凳
niuyaliang|  楼主 | 2014-2-20 12:52 | 只看该作者
我们一般用的的就是__NOP();这条指令(注意前面是两个下划线)
和__WFI();这条指令

使用特权

评论回复
地板
zxf0168| | 2014-2-20 13:50 | 只看该作者
__NOP();这条指令最好别用

使用特权

评论回复
5
niuyaliang|  楼主 | 2014-2-20 14:05 | 只看该作者
zxf0168 发表于 2014-2-20 13:50
__NOP();这条指令最好别用

怎么说,为什么最好别用呢?我刚用了一下

使用特权

评论回复
6
zxf0168| | 2014-2-20 14:07 | 只看该作者
niuyaliang 发表于 2014-2-20 14:05
怎么说,为什么最好别用呢?我刚用了一下

要延时,建议你用延时函数,这个指令最好别用,这个指令部科学

使用特权

评论回复
7
niuyaliang|  楼主 | 2014-2-21 09:58 | 只看该作者
zxf0168 发表于 2014-2-20 14:07
要延时,建议你用延时函数,这个指令最好别用,这个指令部科学

怎么会不科学呢,不懂。。。以下是复制百度的NOP的作用

使用特权

评论回复
8
niuyaliang|  楼主 | 2014-2-21 09:58 | 只看该作者
zxf0168 发表于 2014-2-20 14:07
要延时,建议你用延时函数,这个指令最好别用,这个指令部科学

今天书上问nop指令的作用是什么,我就想起来一条,就是通过nop指令的填充(nop指令一个字节),使指令按字对齐,从而减少取指令时的内存访问次数。
baidu了一下,发现有许多答案:
1)通过nop指令产生一定的延迟,但是对于快速的CPU来说效果不明显,可以使用rep前缀,多延迟几个时钟;-->具体应该说是占用了3个时钟脉冲!
2)i/o传输时,也会用一下nop,等待缓冲区清空,总线恢复;
3)清除由上一个算术逻辑指令设置的flag位;
4)**:)对于原程序中验证部分使用nop来填充,使验证失效;
5)有一个朋友说的比较厉害--在航天飞机控制程序中防止程序跳飞!

使用特权

评论回复
9
computer00| | 2014-2-21 10:24 | 只看该作者
"5)有一个朋友说的比较厉害--在航天飞机控制程序中防止程序跳飞!"
这个应该起不到防止程序跑飞这个作用,只能在跑飞后能够防止出现意外。
我记得多年前我曾发过一个贴子,对于MCU的空闲程序空间,可考虑全部填充上某一跳转指令的机器码。
这样如果程序跑飞了,飞到空闲程序空间时,就可以执行指令并跳转到指定的地方去了,从而就可以捕捉到异常。
我记得在51核中,长跳转指令码是2,如果我们将所有的空闲程序空间都填充上2,那么当程序跑飞到空闲程序空间时,
就会执行这个指令,由于接下来的值也是2,因此最终会跳转到0x0202这个地方去执行,如果我们在0x0202这个地址
安排一个函数,我们就可以在这里捕捉到跑飞的异常了,从而就可以做一些善后处理。

使用特权

评论回复
评分
参与人数 1威望 +4 收起 理由
niuyaliang + 4
10
niuyaliang|  楼主 | 2014-2-21 10:26 | 只看该作者
computer00 发表于 2014-2-21 10:24
"5)有一个朋友说的比较厉害--在航天飞机控制程序中防止程序跳飞!"
这个应该起不到防止程序跑飞这个作用 ...

实际这么干过没。。。

使用特权

评论回复
11
computer00| | 2014-2-21 10:38 | 只看该作者
niuyaliang 发表于 2014-2-21 10:26
实际这么干过没。。。

没有……因为我们的产品都比较稳定:lol

使用特权

评论回复
12
zxf0168| | 2014-2-24 12:57 | 只看该作者
niuyaliang 发表于 2014-2-21 09:58
今天书上问nop指令的作用是什么,我就想起来一条,就是通过nop指令的填充(nop指令一个字节),使指令按 ...

在航天飞机控制程序中防止程序跳飞

使用特权

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

本版积分规则

212

主题

2427

帖子

7

粉丝