关于asm(” RPT #N || NOP”)的一点解释

关于asm(” RPT #N || NOP”)的一点解释

标签: asmcpuDSP 时钟

2016-10-18 09:37 351人阅读 评论(0) 收藏 举报

 分类:

程序备忘(42)  DSP(8) 

其实这条语句在DSP等系统开发中经常要用到,比如更改某些配置后需要延时几个时钟周期才能够生效,这时asm(” RPT #7 || NOP”)便可以闪亮登场了。虽然这个功能我们都知道而且经常使用,但是具体的细节很多人却不知道,包括我。今天在一个交流群里有人突然问这条指令下去执行之后,会占用多少时钟周期呢?结果可想而知问蒙了。

到论坛上发个帖子提问结果没人搭理,或许高手对这个问题并不关心。那只好动手测试一下了。

简单写段代码编译下载到片子里面(我是用的28335进行测试的!),观察CPU Timer0寄存器的TIMER0TIM位。发现执行asm(” RPT #7 || NOP”)之后,TIMER0TIM位增量是8.也就是说每执行一次需要8个时钟周期。确切的说是8个指令周期。这只是对CPU空闲的情况而言,因为空闲的时候,一个指令周期大约就是一个时钟周期。如果28335有任务的时候,可能就会占用9个抑或更多的时钟周期,这要分析流水线等因素。实际应用时,大可不必如此精准。用别的片子也可能会多于8个时钟,主要看片子执行每条指令需要多少个时钟周期。但有一点可以肯定的是asm(” RPT #7 || NOP”)这条指令必然会侵占8个指令周期.因为这条指令的意思就是重复执行7+1=8次 NOP 指令。

简单的总结一下:

对于TMS320F28335而言asm(” RPT #N || NOP”)会执行N+1次NOP指令,占用N+1个指令周期。正常情况下占用N+1个时钟周期。其他的片子占用的时钟周期自己计算。

时间: 2024-07-28 20:43:35

关于asm(” RPT #N || NOP”)的一点解释的相关文章

DSP2812学习笔记-Flash固化操作

DSPFlashLED以CCS3.3版本为例,介绍下关于DSP2812固化烧写的过程. 1.保证工程在RAM中调试完成: 2.配置好Flash.cmd文件,并加入工程:(CMD文件编写参考 ,Flash.cmd代码见附录1) 3.加入起始代码asm文件DSP281x_CodeStartBranch.asm: 4.配置C文件,并将初始化FLASH中的代码拷贝到RAM中运行:(C文件配置见附录2) 5.重新编译工程: 6.选择工具栏 Tools--F28xx On--Chip Flash Progr

Android学习笔记之Fast Json的使用

PS:最近这两天发现了Fast Json 感觉实在是强大.. 学习内容: 1.什么是Fast Json 2.如何使用Fast Json 3.Fast Json的相关原理 4.Fast Json的优势,以及为什么推荐使用Fast Json 1.Fast Json的相关介绍   说道Json想必我们都不陌生,数据传输的两种形式之一,另一种就是我们的xml了.不过现在更多的还是使用基于Json的格式来进行数据传输,Java的api接口为我们提供了相关的api接口用于对Json数据进行处理,如何将数据打

怎样把UCos-ii_在STM32上的移植

下载代码 stm32 标准外设库是 stm32 全系列芯片的外设驱动,有了它能够大大加速我们 开发 stm32. 首先从 st 公司的站点下载最新的 stm32 标准外设库,写本文时最新的版本号是 V3.5.0. 解压该 zip 文件.得到例如以下目录和文件 STM32F10x_StdPeriph_Lib_V3.5.0\ _htmresc Libraries Project Utilities Release_Notes.html stm32f10x_stdperiph_lib_um.chm 当

Oracle Memory Management and HugePage (连载二)

作者:沃趣科技高级数据库工程师  魏兴华 MSMM 10G前SGA的管理是通过手工设置一系列的参数来实现的,例如重要的参数有以下几个: ●             buffer_cache_size ●             shared_pool_size ●             large_pool_size ●             stream_pool_size ●             log_buffer SGA是一大块内存的统称,由上面列出的组件组成,10G之前的版本,

如何把UCos-ii_在STM32上的移植

下载代码 stm32 标准外设库是 stm32 全系列芯片的外设驱动,有了它可以大大加速我们 开发 stm32. 首先从 st 公司的网站下载最新的 stm32 标准外设库,写本文时最新的版本是 V3.5.0. 解压该 zip 文件,得到如下文件夹和文件 STM32F10x_StdPeriph_Lib_V3.5.0\ _htmresc Libraries Project Utilities Release_Notes.html stm32f10x_stdperiph_lib_um.chm 其中

OPCode 详解

OpCode 操作码(Operation Code, OPCode):描述机器语言指令中,指令要执行某种操作的机器码 OPCode在不同的场合中通常具有不同的含义,例如PHP虚拟机(Zend VM).java虚拟机(JVM)以及一些软件保护虚拟机中的最小操作单元都可以称之为OPCode. 常用字节 常用单字节OPCode概览A -- 40~4F opcode asm using 0x40 inc eax emit(0x40) 0x41 inc ecx emit(0x41) 0x42 inc ed

MyBatils课程一

MyBatis 是支持普通 SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis 消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索.MyBatis 使用简单的 XML或注解用于配置和原始映射,将接口和 Java 的POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录. 每个MyBatis应用程序主要都是使用SqlSessionFactory实例的,一个SqlSessionFactory实例可以通过SqlSessionFacto

【整理笔记-防火墙】实现iptables防火墙搭建

搭建防火墙,配置防火墙. - - 系统centos7 . centos7自带firewalld,由于看firewalld命令行没有接触过,所以安装iptables防火墙. 1:禁用firewalld firewall-cmd --state 查看系统自带防火墙状态. 用systemctl stop firewalld.service   禁止立即生效, systemctl disable firewalld.service  永久关闭firewalld.执行完再看一下防火墙状态, 显示为not

浅谈 qmake 之 shadow build(就是将源码路径和构建路径分开)

shadow build shadow build 是什么东西?就是将源码路径和构建路径分开(也就是生成的makefile文件和其他产物都不放到源码路径),以此来保证源码路径的清洁. 这不是qmake独创的东西,cmake中早就使用这个东西了   cmake qmake 备注 in-source cmake . qmake project.pro 在源码路径下执行 out-of-source(shadow-build) mkdir build cd buildcmake ../project m