找回密码
 立即注册
查看: 272|回复: 11

keil C251编译又现BUG_20260124

[复制链接]
  • 打卡等级:以坛为家II
  • 打卡总天数:481
  • 最近打卡:2026-03-21 18:48:59
已绑定手机

104

主题

4193

回帖

9269

积分

荣誉版主

无情的代码机器

积分
9269
发表于 2026-1-24 17:47:25 | 显示全部楼层 |阅读模式
REMOVEUNUSED, NOOVERLAY 皆失效
编译器把代码都干没了!


截图202601241745598350.jpg
  1. sfr P2M1 = 0x95;
  2. sfr P2M0 = 0x96;
  3. sfr P2 = 0xa0;
  4. bit f;
  5. void  main(void){
  6.         P2M0 = 0xff;
  7.         P2M1 = 0x00;
  8.         P2 = 0x0F;
  9.         while(1){
  10.                 P2 = ~P2;
  11.         }
  12.         while(1){
  13.                 if(f){
  14.                 }
  15.         }
  16. }
复制代码

案例2:
截图202601241753016412.jpg

总结:
不要保留不可达的代码段,以防编译器心情不好给你全删了。




三天不学习,赶不上刘少奇~
回复

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:839
  • 最近打卡:2026-03-21 07:52:56
已绑定手机

58

主题

2015

回帖

3623

积分

论坛元老

积分
3623
发表于 2026-1-24 19:41:00 | 显示全部楼层
还有这操作啊

点评

点个灯差点道心干碎了  详情 回复 发表于 2026-1-24 20:59
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:481
  • 最近打卡:2026-03-21 18:48:59
已绑定手机

104

主题

4193

回帖

9269

积分

荣誉版主

无情的代码机器

积分
9269
发表于 2026-1-24 20:59:48 | 显示全部楼层

点个灯差点道心干碎了
三天不学习,赶不上刘少奇~
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:503
  • 最近打卡:2026-03-22 01:05:33
已绑定手机

14

主题

228

回帖

2800

积分

金牌会员

积分
2800
发表于 2026-1-24 21:47:15 | 显示全部楼层
erci*** 发表于 2026-1-24 20:59
点个灯差点道心干碎了

施主道心破碎修为尽失,不如渡入佛门参禅礼佛,日后定能功德大成。

点评

我拒绝~  发表于 2026-1-24 22:05
回复

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:775
  • 最近打卡:2026-03-21 07:32:36
已绑定手机

16

主题

1401

回帖

4919

积分

论坛元老

积分
4919
发表于 2026-1-25 18:39:28 | 显示全部楼层
命令行将C转成ASM是正常的:


$NOMACRO
$MODSRC
$MODEL(1)
$CASE

;
; 'main.SRC' generated from 'main.c'
; COMPILER INVOKED BY:
;        D:\C251_V560\C251.EXE main.c SRC
;
                NAME main

        EXTRN         CODE : NEAR (?C?STARTUP)

            ?PR?MAIN?MAIN  SEGMENT  CODE  
                 ?BI?MAIN  SEGMENT  BIT  

        RSEG       ?BI?MAIN
               f:  DBIT  1


;--- special function registers and bits:
              P2  DATA  0A0H
            P2M1  DATA  095H
            P2M0  DATA  096H
             ACC  DATA  0E0H
             PSW  DATA  0D0H
             DPL  DATA  082H
             DPH  DATA  083H
               B  DATA  0F0H
              SP  DATA  081H
            PSW1  DATA  0D1H
               Z  BIT   0D1H.1
              EA  BIT   0A8H.7
              OV  BIT   0D0H.2
               P  BIT   0D0H.0
              F0  BIT   0D0H.5
             RS1  BIT   0D0H.4
             RS0  BIT   0D0H.3
              AC  BIT   0D0H.6
;--- end of special function registers and bits.

        PUBLIC        main
        PUBLIC        f

; line 1: sfr P2M1 = 0x95;
; line 2: sfr P2M0 = 0x96;
; line 3: sfr P2 = 0xa0;
; line 4: bit f;
; line 5:
; line 6: void  main(void){

        RSEG       ?PR?MAIN?MAIN
        main PROC
; line 7:         P2M0 = 0xff;
        MOV      P2M0,#0FFH
; line 8:         P2M1 = 0x00;
        MOV      P2M1,#00H
; line 9:         P2 = 0x0F;
        MOV      P2,#0FH
; line 10:         while(1){
; line 11:                 P2 = ~P2;
        XRL      P2,#0FFH
; line 12:         }
        SJMP     ?C0003
; line 13:         while(1){
; line 14:                 if(f){
; line 15:                 }
; line 16:         }
; line 17: }

        END

点评

说起ASM,周末有位老哥发现 LX51,将大于31中断函数代码放入开启了汇编的C文件中不会报错 这样LX51既可以用REMOVEUNUSED又可以用大中断号。  详情 回复 发表于 2026-1-25 19:25
回复

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:775
  • 最近打卡:2026-03-21 07:32:36
已绑定手机

16

主题

1401

回帖

4919

积分

论坛元老

积分
4919
发表于 2026-1-25 18:57:45 | 显示全部楼层
试了Keil C51默认的8级优化是没有问题的
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:481
  • 最近打卡:2026-03-21 18:48:59
已绑定手机

104

主题

4193

回帖

9269

积分

荣誉版主

无情的代码机器

积分
9269
发表于 2026-1-25 19:25:46 | 显示全部楼层
21cns*** 发表于 2026-1-25 18:39
命令行将C转成ASM是正常的:

说起ASM,周末有位老哥发现 LX51,将大于31中断函数代码放入开启了汇编的C文件中不会报错

这样LX51既可以用REMOVEUNUSED又可以用大中断号。

三天不学习,赶不上刘少奇~
回复

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:775
  • 最近打卡:2026-03-21 07:32:36
已绑定手机

16

主题

1401

回帖

4919

积分

论坛元老

积分
4919
发表于 2026-1-26 08:27:41 | 显示全部楼层
erci*** 发表于 2026-1-25 19:25
说起ASM,周末有位老哥发现 LX51,将大于31中断函数代码放入开启了汇编的C文件中不会报错

这样LX51既可以 ...

开启了汇编的C文件中,是在c中嵌入汇编代码还是?

点评

只需要打开这两 [attachimg]130486[/attachimg]  详情 回复 发表于 2026-1-26 08:57
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:481
  • 最近打卡:2026-03-21 18:48:59
已绑定手机

104

主题

4193

回帖

9269

积分

荣誉版主

无情的代码机器

积分
9269
发表于 2026-1-26 08:57:42 | 显示全部楼层
21cns*** 发表于 2026-1-26 08:27
开启了汇编的C文件中,是在c中嵌入汇编代码还是?

只需要打开这两

截图202601260857386961.jpg
三天不学习,赶不上刘少奇~
回复

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:775
  • 最近打卡:2026-03-21 07:32:36
已绑定手机

16

主题

1401

回帖

4919

积分

论坛元老

积分
4919
发表于 2026-1-26 09:53:30 | 显示全部楼层
erci*** 发表于 2026-1-26 08:57
只需要打开这两

这两个勾选了,应该就是C转SRC/ASM,然后再对SRC/ASM汇编。
回复

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2026-3-22 03:28 , Processed in 0.115784 second(s), 91 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表