问题描述
我正在使用 Texas Instruments 的 TM4C129X 板,我想运行和分析 C 代码。到目前为止,我还没有找到一个简单的例子来说明如何做到这一点。
我尝试使用一些示例项目,例如“Blinky”或“Hello World”,它在显示器上打印文本。但是,每次当我尝试在 main() 函数的一行中设置断点时,断点都会跳转到 main() 函数的末尾,即我无法真正计算指令之间的周期。
有人有关于如何正确计算周期的说明/教程吗? 我想从一些非常简单的代码开始,如下所示,计算循环的周期。
int main()
{
int a = 0; int i = 0; counter = 100;
for (i = 0; i < counter; i++)
{
a += i;
}
return 0;
}
我设置的每个断点都会跳转到 return 语句..
解决方法
首先提供的代码不会编译。努力解决您的问题,确保您发布的代码可以编译并提供(甚至是不稳定的)输出!
我设置的每个断点都会跳转到 return 语句..
您的程序已被编译器优化为简单返回。因此,如果您尝试在 main
函数中的某处设置断点,它会被设置为编译文件中唯一存在的语句 - return
。
示例:https://godbolt.org/z/sEvjWWsbW
我不建议将优化级别设置为 0
,因为您想要分析您的代码,并且分析 -O0
生成的代码是没有意义的。
- 试试不那么简单的例子。
- 查看编译代码中的实际内容。请记住,程序流程可能与您的 C 代码不同,可以优化变量,并删除执行某些操作而没有明显影响的代码。