Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >没有ALU的手臂操作要多少钱

没有ALU的手臂操作要多少钱
EN

Stack Overflow用户
提问于 2014-08-26 13:20:33
回答 2查看 387关注 0票数 0

我在ARM Cortex M3上遇到了一个问题,它的一些功能要求对自然数进行乘法和除法。关键是:如果可以在128位数之间进行计算?我需要知道有多少装配操作需要软件模拟多个两个32位数字和除以两个32位数,然后我将计算我计算的时间消耗。我一直在计算,我需要帮助,因为也许我必须用硬件ALU将我的uC转换为皮质M4。

你能帮我做这个吗?

给定简单的C代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
uint32_t var1 = 12304;
uint32_t var2 = 1892637198;
uint64_t result = var1*var2;

和objdump汇编程序:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   0:   b480            push    {r7}
   2:   b085            sub     sp, #20
   4:   af00            add     r7, sp, #0
        uint32_t var1 = 12304;
   6:   f243 0310       movw    r3, #12304      ; 0x3010
   a:   60fb            str     r3, [r7, #12]
        uint32_t var2 = 1892637198;
   c:   f645 230e       movw    r3, #23054      ; 0x5a0e
  10:   f2c7 03cf       movt    r3, #28879      ; 0x70cf
  14:   60bb            str     r3, [r7, #8]

        uint64_t result = var1*var2;
  16:   68fb            ldr     r3, [r7, #12]
  18:   68ba            ldr     r2, [r7, #8]
  1a:   fb02 f103       mul.w   r1, r2, r3
  1e:   460a            mov     r2, r1
  20:   f04f 0300       mov.w   r3, #0
  24:   e9c7 2300       strd    r2, r3, [r7]

因此,如果我计算,例如多重乘法,我可以得到整个指令(因为将值加载到寄存器中,所以每个负载加上3条指令)或仅乘以(在本例中为6条指令)。

因为将格式化为(x^5+x)的两个128位变量乘以x是32位变量,所以给我(a+b)(c+d) ab+ad+bc+bd 4乘法(或3通过算法)。因此,如果我应该计算4*(3+3+6)或4*(6+?+?)。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-08-26 13:29:32

ARM指令

此页面包含ARM M系列处理器的每条指令的所有循环计数.如果您有程序集代码(听起来是这样的吗?)然后,可以很容易地将所有的周期加起来,乘以1/clock_freq,得到用于不同场景的总时间。

票数 1
EN

Stack Overflow用户

发布于 2014-08-29 01:52:28

另一种解决方案是使用cycle来测量周期计数。

参见此臂链

编辑:,您可以将计数器设置为最大值,并在计数器值达到0时强制重新加载其计数器值。

//配置系统

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 \*STRVR = 0xFFFFFF;  // max count     \*STCVR = 0;         // force a re-load of the counter value register     \*STCSR = 5;         // enable FCLK count without interrupt

您可以在函数前后读取STCVR,这是一个下行寄存器,然后删除开销周期(读取STCVR寄存器)。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25515325

复制
相关文章
Linux 大文件分割合并
文件分割可以使用split命令,该即支持文本文件分割,又支持二进制文件分割;而合并文件可以使用cat命令。
用户8824291
2022/02/25
4.6K0
Python 分割合并大文件
有时候,我们需要把一个大文件发送给别人,但是限于传输通道的限制,比如邮箱附件大小的限制,或者网络状况不太好,需要将大文件分割成小文件,分多次发送,接收端再对这些小文件进行合并。今天就来分享一下用 Python 分割合并大文件的方法。
somenzz
2022/10/25
1K0
Python 分割合并大文件
Linux 下大文件切割与合并
往往是因为网络传输的限制,导致很多时候,我们需要在 Linux 系统下进行大文件的切割。这样将一个大文件切割成为多个小文件,进行传输,传输完毕之后进行合并即可。
互联网老辛
2021/07/14
2.9K0
Linux 下大文件切割与合并
Linux 下大文件切割与合并
往往是因为网络传输的限制,导致很多时候,我们需要在 Linux 系统下进行大文件的切割。这样将一个大文件切割成为多个小文件,进行传输,传输完毕之后进行合并即可。
民工哥
2021/07/16
3.1K0
Linux 下大文件切割与合并
Linux 下大文件切割与合并
往往是因为网络传输的限制,导致很多时候,我们需要在 Linux 系统下进行大文件的切割。这样将一个大文件切割成为多个小文件,进行传输,传输完毕之后进行合并即可。
用户8639654
2021/08/05
2.5K0
linux下大文件切割与合并
原文:https://www.escapelife.site/posts/72f237d3.html
入门笔记
2022/06/02
2.5K0
编码技巧 --- 内存有限下合并大文件
「假设有10个接口访问的日志,每个日志的大小为300M,每个文件里的日志都是按照时间戳从小到大排序的。现在我们希望将这10个较小的日志文件,合并为一个大文件,合并之后的文件依旧按照时间戳从小到大排序,如果处理上述任务的机器只有1G内存,那么该如何将这10个日志文件合并?」
Niuery Diary
2023/10/22
3330
编码技巧 --- 内存有限下合并大文件
转 | Linux大文件(比如ISO)的拆分、合并、校验
大文件在实际应用传输过程中往往经历拆分、合并的过程。文件在多次传输后有可能会损坏,在使用前可以进行完整性校验。
create17
2019/03/12
4.3K0
如何在 Linux 下优雅的进行大文件切割与合并?
往往是因为网络传输的限制,导致很多时候,我们需要在 Linux 系统下进行大文件的切割。这样将一个大文件切割成为多个小文件,进行传输,传输完毕之后进行合并即可。
杰哥的IT之旅
2021/07/13
1K0
如何在 Linux下优雅的进行大文件切割与合并
往往是因为网络传输的限制,导致很多时候,我们需要在 Linux 系统下进行大文件的切割。这样将一个大文件切割成为多个小文件,进行传输,传输完毕之后进行合并即可。 1. 文件切割 - split 在 Linux 系统下使用 split 命令进行大文件切割很方便 [1] 命令语法 # -a: 指定输出文件名的后缀长度(默认为2个:aa,ab...) # -d: 指定输出文件名的后缀用数字代替 # -l: 行数分割模式(指定每多少行切成一个小文件;默认行数是1000行) # -b: 二进制分割模式(支持单位:k/
iMike
2021/07/01
3.8K0
git上传大文件
第一步 安装lfs git lfs install 第二步 查找大文件 find ./ -size +100M ./表示当前目录下 第三步 追踪大文件 git lfs track "大文件的名称" 第四步 正常上传git git add . git commit -m 'commit' git push origin main
西西嘛呦
2021/12/07
2.6K0
pandas 大文件操作
这几天有一个需求是读取.dta文件并转为.csv,google了一下发现pandas也是支持dta格式的
Kevinello
2022/08/19
1.5K0
pandas 大文件操作
Python 读取大文件
在处理大数据时,有可能会碰到好几个 G 大小的文件。如果通过一些工具(例如:NotePad++)打开它,会发生错误,无法读取任何内容。
py3study
2020/01/10
1.7K0
大文件切割技巧
主要用到split命令:可以将一个大文件分割成多个小文件,有时候文件太大了需要将文件分割成更小的片段,如数据库备份sql文件或者应用log
summerking
2022/10/27
1.3K0
golang 大文件分割
golang 大文件分割 package main import ( "fmt" "io/ioutil" "math" "os" "strconv" ) const chunkSize int64 = 4 << 20 func main() { fileInfo, err := os.Stat("test.zip") if err != nil { fmt.Println(err) } num := int(math.Ceil
大师级码师
2021/11/02
1.8K0
linux大文件分割
linux下文件合并是用cat来实现,那么将大文件分割成小文件怎么办呢? 我们可以用split命令来实现,既可以指定按行分割也能指定按大小分割,非常方便实用。
生信编程日常
2020/04/01
4.6K0
python 查找大文件
root="D:\" def get_FileSize(filePath): try: fsize = os.path.getsize(filePath) fsize = fsize/float(1024*1024) return round(fsize,2) except: return 0 for r,dirs,files in os.walk(root): for file in files: name=os.path.join(r,file) size=get_FileSize(name) if size>500: print(name,size)
用户5760343
2019/11/21
2.5K0
点击加载更多

相似问题

错误:13- android studio权限被拒绝

31

/user/1/ OSError [Errno 13]权限被拒绝:OSError

22

Errno 13权限被拒绝Python

5130

Python:[Errno 13]权限被拒绝

220

IOError:[Errno 13]权限被拒绝

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文