将寄存器值读入变量 - 例如控制电脑位置

read register value into variable - e.g. control location of pc

目的是检查我的控制器是否停在了正确的位置。

我正在使用 tcl 脚本。 命令 reg pc 将寄存器 pc 的值输出到控制台。所以理论上下面的命令应该在变量中存储一些东西。

set x [ reg pc ]

但是结果变量x仍然是空的。

如何检索寄存器的值并将其存储到变量中?

你需要的是exec命令:

set x [exec reg pc]

exec命令执行reg pc命令和returns输出。

有点棘手。 reg pc 没有 return 任何东西...为什么还要呢?^^ 会很有用 -.-

然而,这件作品的功劳归功于 mailinglist

set real_pc  [lindex [ocd_reg pc] 2]

# following executed returns the pc at (here) 0x1FC
ocd_reg pc
# returns: "pc (/32): 0x000001FC "

# Now I can check for my pc in tcl =)!
if { $expected_pc == $real_pc } { \
    echo "reg pc is correct! at $real_pc"
}

在我看来,字符串被分成了 3 个块。采取的是块 2,计数从 0 开始。在 tcl 中,一切都是字符串。所以这有效!