• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

keil执行语句的顺序

無唁苡對 2018-07-12 浏览量:1616
为什么在keil里边写的语句,单步调试时,发现disassembly里的汇编的执行顺序,没有按照keil里面的顺序???? 
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 代码优化等级是多少?
    • 发布于 2018-07-12
    • 举报
    • 评论 3
    • 1
    • 0
無唁苡對 回复了 skawu:3 回复
skawu 回复了 無唁苡對:记得看过篇文章,讲过是优化等级的事,你把优化等级改为0试试 回复
無唁苡對 回复了 skawu:嗯,优化等级改为0就好了,不知道为什么?? 回复

其他答案 数量:9
  • 可能是遇到跳转指令了.最好能将代码贴出来.

    • 发布于2018-07-12
    • 举报
    • 评论 0
    • 1
    • 0

  • void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
    {
    d=2300;
    t++;
    if(t==1)
    {
    Tx_buffer2=Tx_buffer;
    ad=(_Bool)(Tx_buffer2&0x1);
    if(ad==1)
    {
    t=0;
    TRx_buffer=((uint16_t)Tx_buffer2<<8);
    HAL_SRAM_Write_16b(&hsram1(uint32_t *)(Bank1_SRAM3_ADDR)&TRx_buffer0x01);
    ad=0;
    }

    }

    这是程序代码,进入中断之后,会先去执行sram_write,然后在执行上边的语句

    • 发布于2018-07-12
    • 举报
    • 评论 0
    • 1
    • 0

  • 最好贴出来代码 一般是根据顺序来的 除非有些中断还有一些自定义的宏命令 其实还是按照c命令的顺序执行
    • 发布于2018-07-12
    • 举报
    • 评论 0
    • 0
    • 0

  • 贴出 代码 一起观赏一下吧,

    你不是看的你的C代码 , 看的汇编语言吗》?

    • 发布于2018-07-12
    • 举报
    • 评论 0
    • 0
    • 0

  • 和C语言的编写有关系,有时候反汇编并不能够完全按照C语言的指令去执行,特别是一些奇形怪状的C语言语句。
    • 发布于2018-07-12
    • 举报
    • 评论 0
    • 0
    • 0

  • 汇编代码里有没有跳转,有没有中断什么的,这些会让代码不顺序执行的
    • 发布于2018-07-12
    • 举报
    • 评论 0
    • 0
    • 0

  • 汇编的执行顺序肯定跟C不一样的,因为汇编的跳转和中断机制和C是完全不同的,最简单的例子,汇编即使是查表也会跳转,C是绝对不会的。

    • 发布于2018-07-12
    • 举报
    • 评论 0
    • 0
    • 0

  • 汇编是有转跳语句的,类似于C语言的goto语句,所以不一定是顺序执行
    • 发布于2018-07-23
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

keil执行语句的顺序