小编Eri*_*Sun的帖子

当表达式中涉及数学除法时,如何使用vim正则表达式替换文本

我正在使用vim处理如下文本

0x8000   INDEX1 ....
0x8080   INDEX2 ....
....
0x8800   INDEXn ....
Run Code Online (Sandbox Code Playgroud)

我想使用正则表达式来获取每行的索引号.那是

0x8000 ~ 0
0x8080 ~ 1
....
0x8800 ~ n
Run Code Online (Sandbox Code Playgroud)

数学评估应该是(十六进制 - 0x8000)/ 0x80.我试图使用vim正则表达式替换来获得结果

%s/^\(\x\+\)/\=printf("%d", submatch(1) - 0x8000)
Run Code Online (Sandbox Code Playgroud)

这会产生

0     INDEX0
128   INDEX1
....
2048  INDEXn
Run Code Online (Sandbox Code Playgroud)

我想做的是进一步改变它

0     INDEX0
1     INDEX1
...
20    INDEXn
Run Code Online (Sandbox Code Playgroud)

也就是说,我想进一步将第一列除以0x80.这是我遇到问题的时候.

原始参数是"submatch(1) - 0x8000".我现在添加一个"/ 0x80",形成

%s/^\(\x\+\)/\=printf("%d", (submatch(1) - 0x8000)\/0x80)
Run Code Online (Sandbox Code Playgroud)

现在Vim报告错误

Invalid expression: printf("%d", (submatch(1) - 0x8000)\/0x80))
Run Code Online (Sandbox Code Playgroud)

处理"/"时看起来像vim遇到问题.我也试过单个"/"(没有逃脱),但仍然失败.

谁可以帮我这个事?

regex vim eval

5
推荐指数
1
解决办法
1230
查看次数

Cortex M4 LDR/STR 时序

我正在阅读 Cortex M4 TRM 以了解指令执行周期。但是,那里有一些令人困惑的描述

  1. 处理器指令表中STR需要2 个周期
  2. 稍后在加载/存储时间中,它表明

STR Rx,[Ry,#imm]总是一个周期,这是因为地址生成在初始循环中执行,并且所述数据存储在同一时间作为下一个指令正在执行执行。

如果存储到write buffer,并且write buffer已满或未启用,则下一条指令将延迟,直到存储完成。

如果存储不是到write buffer,例如代码段,并且该事务停止,则只有在完成之前执行另一个加载或存储操作时才会感受到对计时的影响

  1. 仍然在Load/store Timings 中,表示LDR可以通过跟随LDR和进行流水线化STR,但STR不能通过跟随指令进行流水线化。

其他指令在STR使用寄存器偏移后无法流水线化。STR 只能在跟随 LDR 时被流水线化,但在存储之后什么都不能流水线化。由于写缓冲区的原因,即使停止STR通常也只需要两个周期

更具体的让我困惑的是:

一季度。12似乎相互冲突,STR实际需要多少个周期,1 还是 2?(虽然我的实验显示为 1)

Q2。2表示如果存储通过write buffer并且不可用,它仍然会停止流水线,但是如果存储绕过它,流水线可能只在加载/存储指令跟随时停止。闻起来write buffer只会让事情变得更糟。这是有悖常理的。

Q3。3表示STR不能与后续指令流水线化,但是2 …

performance assembly arm cpu-architecture cortex-m

5
推荐指数
1
解决办法
304
查看次数

在trace32中进行LauterBach调试:是否可以在进入上下文之前为局部变量设置数据断点?

在帮助文档中,可以使用以下命令设置数据访问断点

var.break <variable> /READWRITE
Run Code Online (Sandbox Code Playgroud)

但是,这仅在我们输入该变量的上下文时才有效。

因为我想编写PRACTICE脚本来执行自动调试,所以我想在程序运行之前执行此操作。就像是

....
var.break <foo>::<variable> /READWRITE
GO
WAIT !run()
...
Run Code Online (Sandbox Code Playgroud)

有办法吗?

breakpoints local-variables trace32 lauterbach

4
推荐指数
1
解决办法
5598
查看次数