We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
Is there a way to change the DEFINE statement to get rid of the two useless mov(s)?
C51 COMPILER V6.02, COMPILATION OF MODULE MAIN OBJECT MODULE PLACED IN .\MAIN.OBJ COMPILER INVOKED BY: C:\PROGRAM FILES\KEIL\C51\BIN\C51.EXE .\MAIN.C OPTIMIZE(7,SPEED) NOINTPROMOTE MODDP2 DEBUG OBJECTEX -TEND CODE SYMBOLS NOCOND stmt level source 1 typedef unsigned char BYTE; 2 typedef unsigned int WORD; 3 4 typedef pdata struct 5 { 6 BYTE PC0 :1; 7 BYTE PC1 :1; 8 BYTE nFifoPend :1; //PC2 9 BYTE PC3 :1; 10 BYTE FpgaReset :1; //PC4 11 BYTE PC5 :1; 12 BYTE PC6 :1; 13 BYTE PC7 :1; 14 } CType; 15 16 extern volatile BYTE pdata xOUTC; 17 18 #define IoPins_FpgaReset ( ((CType pdata*)(&xOUTC))->FpgaReset ) 19 20 void main(void) 21 { 22 1 IoPins_FpgaReset = 1; 23 1 } 24 25 ; FUNCTION main (BEGIN) ; SOURCE LINE # 20 ; SOURCE LINE # 21 ; SOURCE LINE # 22 0000 7A00 E MOV R2,#HIGH xOUTC 0002 7900 E MOV R1,#LOW xOUTC 0004 7800 E MOV R0,#LOW xOUTC 0006 E2 MOVX A,@R0 0007 4410 ORL A,#010H 0009 F2 MOVX @R0,A ; SOURCE LINE # 23 000A 22 RET ; FUNCTION main (END)