gpt4 book ai didi

c - 了解stm8s反汇编中的功能?

转载 作者:太空宇宙 更新时间:2023-11-04 01:44:38 24 4
gpt4 key购买 nike

我正在使用 STVD IDE 对 STM8S 微 Controller 进行编程。它使用 COSMIC 编译器。

我发现有一个veriable意外增加了。调试的时候发现汇编代码中有一行导致这个变量增加了值。这是一个名为 c_lgadc 的函数。有时在调用堆栈中没有显示 ADC 相关函数时调用此流水线。

我不明白这段代码是从哪里来的,这个c_lgadc是什么?我在名为 c_lgadc

的 C 代码中没有函数

这是反汇编的屏幕截图。 enter image description here

更新:

  • 我不知道应该检查什么 C 代码,因为调用堆栈是每次调用此反汇编线时都不同。
  • 我注意到当我跨过或进入调试器时,它会出现到特定定时器 ISR 的最后一行。
  • 我还注意到带有第二个断点的行是导致添加到我的变量的行。具有第一个断点的行总是被调用 5 次,然后是该行第二个断点被调用一次,依此类推。
  • 我想知道我应该如何进一步调试它以防止意外添加到我的变量中。

更新 2:

我在 map 文件中找到了以下内容:

c_lgadc 0000f39c defined in (C:\Users\xxxxxxxx\CXSTM8\Lib\libm0.sm8)lgadc.o section .text
used in Debug\stm8s_it.o

我不确定这是否有助于澄清问题?

最佳答案

I've noticed that when I step over or into in the debugger, it comes to the last line of a specific timer ISR.

所以,这个计时器 ISR 递增一个 4 字节整数变量,并且这个变量与你的变量重叠。通过检查该 ISR 或链接映射可以揭示这种重叠是如何发生的,或者可能是索引寄存器 X 在 ISR 中设置不正确。

关于c - 了解stm8s反汇编中的功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56027678/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com