This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

unexpected code

There is simple code

    usRDelay(17);
    Comm_LineOut_Port=SendData.B.Bit02;
    usRDelay(17);
    Comm_LineOut_Port=SendData.B.Bit01;
    usRDelay(17);
    Comm_LineOut_Port=SendData.B.Bit00;
    usRDelay(17);
    Comm_LineOut_Port=1;

I compiled it by keil for arm ver v4.53.0.0(coretex m3)

I got below assambly code

But I meet unexpected code line 0083ae

0083ae  e00b              B        |L1.33736|
                  |L1.33712|
                          DCD      TimeAlarmFlags
                  |L1.33716|
                          DCD      PwrOn_Redy_Cnt
                  |L1.33720|
                          DCD      TimeFlags
                  |L1.33724|
                          DCD      PCU_C
                  |L1.33728|
                          DCD      GPIO_C
                  |L1.33732|
                          DCD      uR0
                  |L1.33736|

So fuction usRDelay(17); is more delayed.
Why unexpected code is generated?
What is that code?
(p.s. TimeAlarmFlags is defined unsigned char by me, but why that is suddenly located?)

;;;7580       usRDelay(17);
008346  2011              MOVS     r0,#0x11
008348  491e              LDR      r1,|L1.33732|
00834a  7008              STRB     r0,[r1,#0]
00834c  bf00              NOP
                  |L1.33614|
00834e  481d              LDR      r0,|L1.33732|
008350  7800              LDRB     r0,[r0,#0]  ; uR0
008352  1e40              SUBS     r0,r0,#1
008354  f01000ff          ANDS     r0,r0,#0xff
008358  491a              LDR      r1,|L1.33732|
00835a  7008              STRB     r0,[r1,#0]
00835c  d1f7              BNE      |L1.33614|
;;;7581       Comm_LineOut_Port=SendData.B.Bit02;
00835e  f89d0000          LDRB     r0,[sp,#0]
008362  f3c00180          UBFX     r1,r0,#2,#1
008366  4816              LDR      r0,|L1.33728|
008368  6800              LDR      r0,[r0,#0]  ; GPIO_C
00836a  6800              LDR      r0,[r0,#0]
00836c  f36120cb          BFI      r0,r1,#11,#1
008370  4913              LDR      r1,|L1.33728|
008372  6809              LDR      r1,[r1,#0]  ; GPIO_C
008374  6008              STR      r0,[r1,#0]
;;;7582       usRDelay(17);
008376  2011              MOVS     r0,#0x11
008378  4912              LDR      r1,|L1.33732|
00837a  7008              STRB     r0,[r1,#0]
00837c  bf00              NOP
                  |L1.33662|
00837e  4811              LDR      r0,|L1.33732|
008380  7800              LDRB     r0,[r0,#0]  ; uR0
008382  1e40              SUBS     r0,r0,#1
008384  f01000ff          ANDS     r0,r0,#0xff
008388  490e              LDR      r1,|L1.33732|
00838a  7008              STRB     r0,[r1,#0]
00838c  d1f7              BNE      |L1.33662|
;;;7583       Comm_LineOut_Port=SendData.B.Bit01;
00838e  f89d0000          LDRB     r0,[sp,#0]
008392  f3c00140          UBFX     r1,r0,#1,#1
008396  480a              LDR      r0,|L1.33728|
008398  6800              LDR      r0,[r0,#0]  ; GPIO_C
00839a  6800              LDR      r0,[r0,#0]
00839c  f36120cb          BFI      r0,r1,#11,#1
0083a0  4907              LDR      r1,|L1.33728|
0083a2  6809              LDR      r1,[r1,#0]  ; GPIO_C
0083a4  6008              STR      r0,[r1,#0]
;;;7584       usRDelay(17);
0083a6  2011              MOVS     r0,#0x11
0083a8  4906              LDR      r1,|L1.33732|
0083aa  7008              STRB     r0,[r1,#0]
0083ac  bf00              NOP
                  |L1.33710|
0083ae  e00b              B        |L1.33736|
                  |L1.33712|
                          DCD      TimeAlarmFlags
                  |L1.33716|
                          DCD      PwrOn_Redy_Cnt
                  |L1.33720|
                          DCD      TimeFlags
                  |L1.33724|
                          DCD      PCU_C
                  |L1.33728|
                          DCD      GPIO_C
                  |L1.33732|
                          DCD      uR0
                  |L1.33736|
0083c8  48fb              LDR      r0,|L1.34744|
0083ca  7800              LDRB     r0,[r0,#0]  ; uR0
0083cc  1e40              SUBS     r0,r0,#1
0083ce  f01000ff          ANDS     r0,r0,#0xff
0083d2  49f9              LDR      r1,|L1.34744|
0083d4  7008              STRB     r0,[r1,#0]
0083d6  d1ea              BNE      |L1.33710|
;;;7585       Comm_LineOut_Port=SendData.B.Bit00;
0083d8  f89d0000          LDRB     r0,[sp,#0]
0083dc  49f7              LDR      r1,|L1.34748|
0083de  6809              LDR      r1,[r1,#0]  ; GPIO_C
0083e0  6809              LDR      r1,[r1,#0]
0083e2  f36021cb          BFI      r1,r0,#11,#1
0083e6  48f5              LDR      r0,|L1.34748|
0083e8  6800              LDR      r0,[r0,#0]  ; GPIO_C
0083ea  6001              STR      r1,[r0,#0]
;;;7586       usRDelay(17);
0083ec  2011              MOVS     r0,#0x11
0083ee  49f2              LDR      r1,|L1.34744|
0083f0  7008              STRB     r0,[r1,#0]
0083f2  bf00              NOP
                  |L1.33780|
0083f4  48f0              LDR      r0,|L1.34744|
0083f6  7800              LDRB     r0,[r0,#0]  ; uR0
0083f8  1e40              SUBS     r0,r0,#1
0083fa  f01000ff          ANDS     r0,r0,#0xff
0083fe  49ee              LDR      r1,|L1.34744|
008400  7008              STRB     r0,[r1,#0]
008402  d1f7              BNE      |L1.33780|
;;;7587
;;;7588       Comm_LineOut_Port=1;
008404  48ed              LDR      r0,|L1.34748|
008406  6800              LDR      r0,[r0,#0]  ; GPIO_C
008408  6800              LDR      r0,[r0,#0]
00840a  f4206000          BIC      r0,r0,#0x800
00840e  f5006000          ADD      r0,r0,#0x800
008412  49ea              LDR      r1,|L1.34748|
008414  6809              LDR      r1,[r1,#0]  ; GPIO_C
008416  6008              STR      r0,[r1,#0]

  • The first line of your unexpected code is a branch. Presumably for what follows in your source code snippet. What follows the branch is simply going to be some other part of the executable image.

    So, nothing abnormal or strange. No reason to be concerned.

  • UINT8 Comm_Data(UINT8 Data)
    {
        volatile UINT8_B bR1,SendData;
    
        //UINT8 R0,R1;
    
        SendData.U=Data;
    
        //R0=0;
        //R1=1;
    
        __disable_irq();
    
        CSP_PCU_Set_Direction_Type(PCU_C, PIN_11, PnCR_OUTPUT_PUSH_PULL);//ì¶œë ¥
        Comm_LineOut_Port=0;
    
        usRDelay(50);
    
        Comm_LineOut_Port=1;
    
        CSP_PCU_Set_Direction_Type(PCU_C, PIN_11, PnCR_INPUT_LOGIC);//ìž…ë ¥
        usRDelay(27); // Clock high time 4.0us
        __nop();__nop();__nop();
        bR1.B.Bit07=Comm_LineIn_Port;//GPIO_A->PnODR.B.Bit08=R0;//GPIO_A->PnODR.B.Bit08^=1;//
        usRDelay(17);
        __nop();__nop();__nop();
        bR1.B.Bit06=Comm_LineIn_Port;//GPIO_A->PnODR.B.Bit08=R1;
        usRDelay(17);
        __nop();__nop();__nop();
        bR1.B.Bit05=Comm_LineIn_Port;//
        usRDelay(17);
        __nop();__nop();__nop();
        bR1.B.Bit04=Comm_LineIn_Port;//
        usRDelay(17);
        __nop();__nop();
        bR1.B.Bit03=Comm_LineIn_Port;//
        usRDelay(17);
        __nop();__nop();
        bR1.B.Bit02=Comm_LineIn_Port;//
        usRDelay(17);
        __nop();__nop();
        bR1.B.Bit01=Comm_LineIn_Port;//
        usRDelay(17);
        __nop();__nop();
        bR1.B.Bit00=Comm_LineIn_Port;//
        usRDelay(17);
    
        usRDelay(7);
    
        CSP_PCU_Set_Direction_Type(PCU_C, PIN_11, PnCR_OUTPUT_PUSH_PULL);//ì¶œë ¥
    
        Comm_LineOut_Port=SendData.B.Bit07;
        usRDelay(17);
        Comm_LineOut_Port=SendData.B.Bit06;
        usRDelay(17);
        Comm_LineOut_Port=SendData.B.Bit05;
        usRDelay(17);
        Comm_LineOut_Port=SendData.B.Bit04;
        usRDelay(17);
        Comm_LineOut_Port=SendData.B.Bit03;
        usRDelay(17);
        Comm_LineOut_Port=SendData.B.Bit02;
        usRDelay(17);
        Comm_LineOut_Port=SendData.B.Bit01;
        usRDelay(17);
        Comm_LineOut_Port=SendData.B.Bit00;
        usRDelay(17);
    
        Comm_LineOut_Port=1;
        CSP_PCU_Set_Direction_Type(PCU_C, PIN_11, PnCR_INPUT_LOGIC);//ìž…ë ¥
    
        __enable_irq();
    
            return (UINT8)bR1.U;
    
    }
    

  • Comm_Data PROC
    ;;;7519
    ;;;7520   UINT8 Comm_Data(UINT8 Data)
    008052  b51c              PUSH     {r2-r4,lr}
    ;;;7521   {
    008054  4604              MOV      r4,r0
    ;;;7522       volatile UINT8_B bR1,SendData;
    ;;;7523
    ;;;7524       //UINT8 R0,R1;
    ;;;7525
    ;;;7526       SendData.U=Data;
    008056  9400              STR      r4,[sp,#0]
    ;;;7527
    ;;;7528       //R0=0;
    ;;;7529       //R1=1;
    ;;;7530
    ;;;7531       __disable_irq();
    008058  b672              CPSID    i
    ;;;7532
    ;;;7533       CSP_PCU_Set_Direction_Type(PCU_C, PIN_11, PnCR_OUTPUT_PUSH_PULL);//ì¶œë ¥
    00805a  2200              MOVS     r2,#0
    00805c  210b              MOVS     r1,#0xb
    00805e  48d7              LDR      r0,|L1.33724|
    008060  6800              LDR      r0,[r0,#0]  ; PCU_C
    008062  f7fffffe          BL       CSP_PCU_Set_Direction_Type
    ;;;7534       Comm_LineOut_Port=0;
    008066  48d6              LDR      r0,|L1.33728|
    008068  6800              LDR      r0,[r0,#0]  ; GPIO_C
    00806a  6800              LDR      r0,[r0,#0]
    00806c  f4206000          BIC      r0,r0,#0x800
    008070  49d3              LDR      r1,|L1.33728|
    008072  6809              LDR      r1,[r1,#0]  ; GPIO_C
    008074  6008              STR      r0,[r1,#0]
    ;;;7535
    ;;;7536       usRDelay(50);
    008076  2032              MOVS     r0,#0x32
    008078  49d2              LDR      r1,|L1.33732|
    00807a  7008              STRB     r0,[r1,#0]
    00807c  bf00              NOP
                      |L1.32894|
    00807e  48d1              LDR      r0,|L1.33732|
    008080  7800              LDRB     r0,[r0,#0]  ; uR0
    008082  1e40              SUBS     r0,r0,#1
    008084  f01000ff          ANDS     r0,r0,#0xff
    008088  49ce              LDR      r1,|L1.33732|
    00808a  7008              STRB     r0,[r1,#0]
    00808c  d1f7              BNE      |L1.32894|
    ;;;7537
    ;;;7538       Comm_LineOut_Port=1;
    00808e  48cc              LDR      r0,|L1.33728|
    008090  6800              LDR      r0,[r0,#0]  ; GPIO_C
    008092  6800              LDR      r0,[r0,#0]
    008094  f4206000          BIC      r0,r0,#0x800
    008098  f5006000          ADD      r0,r0,#0x800
    00809c  49c8              LDR      r1,|L1.33728|
    00809e  6809              LDR      r1,[r1,#0]  ; GPIO_C
    0080a0  6008              STR      r0,[r1,#0]
    ;;;7539
    ;;;7540       CSP_PCU_Set_Direction_Type(PCU_C, PIN_11, PnCR_INPUT_LOGIC);//ìž…ë ¥
    0080a2  2202              MOVS     r2,#2
    0080a4  210b              MOVS     r1,#0xb
    0080a6  48c5              LDR      r0,|L1.33724|
    0080a8  6800              LDR      r0,[r0,#0]  ; PCU_C
    0080aa  f7fffffe          BL       CSP_PCU_Set_Direction_Type
    ;;;7541       usRDelay(27); // Clock high time 4.0us
    0080ae  201b              MOVS     r0,#0x1b
    0080b0  49c4              LDR      r1,|L1.33732|
    0080b2  7008              STRB     r0,[r1,#0]
    0080b4  bf00              NOP
                      |L1.32950|
    0080b6  48c3              LDR      r0,|L1.33732|
    0080b8  7800              LDRB     r0,[r0,#0]  ; uR0
    0080ba  1e40              SUBS     r0,r0,#1
    0080bc  f01000ff          ANDS     r0,r0,#0xff
    0080c0  49c0              LDR      r1,|L1.33732|
    0080c2  7008              STRB     r0,[r1,#0]
    0080c4  d1f7              BNE      |L1.32950|
    ;;;7542       __nop();__nop();__nop();
    0080c6  bf00              NOP
    0080c8  bf00              NOP
    0080ca  bf00              NOP
    ;;;7543       bR1.B.Bit07=Comm_LineIn_Port;//GPIO_A->PnODR.B.Bit08=R0;//GPIO_A->PnODR.B.Bit08^=1;//
    0080cc  48bc              LDR      r0,|L1.33728|
    0080ce  6800              LDR      r0,[r0,#0]  ; GPIO_C
    0080d0  6840              LDR      r0,[r0,#4]
    0080d2  f3c021c0          UBFX     r1,r0,#11,#1
    0080d6  f89d0004          LDRB     r0,[sp,#4]
    0080da  f36110c7          BFI      r0,r1,#7,#1
    0080de  9001              STR      r0,[sp,#4]
    ;;;7544       usRDelay(17);
    0080e0  2011              MOVS     r0,#0x11
    0080e2  49b8              LDR      r1,|L1.33732|
    0080e4  7008              STRB     r0,[r1,#0]
    0080e6  bf00              NOP
                      |L1.33000|
    0080e8  48b6              LDR      r0,|L1.33732|
    0080ea  7800              LDRB     r0,[r0,#0]  ; uR0
    0080ec  1e40              SUBS     r0,r0,#1
    0080ee  f01000ff          ANDS     r0,r0,#0xff
    0080f2  49b4              LDR      r1,|L1.33732|
    0080f4  7008              STRB     r0,[r1,#0]
    0080f6  d1f7              BNE      |L1.33000|
    ;;;7545       __nop();__nop();__nop();
    0080f8  bf00              NOP
    0080fa  bf00              NOP
    0080fc  bf00              NOP
    ;;;7546       bR1.B.Bit06=Comm_LineIn_Port;//GPIO_A->PnODR.B.Bit08=R1;
    0080fe  48b0              LDR      r0,|L1.33728|
    008100  6800              LDR      r0,[r0,#0]  ; GPIO_C
    008102  6840              LDR      r0,[r0,#4]
    008104  f3c021c0          UBFX     r1,r0,#11,#1
    008108  f89d0004          LDRB     r0,[sp,#4]
    00810c  f3611086          BFI      r0,r1,#6,#1
    008110  9001              STR      r0,[sp,#4]
    ;;;7547       usRDelay(17);
    008112  2011              MOVS     r0,#0x11
    008114  49ab              LDR      r1,|L1.33732|
    008116  7008              STRB     r0,[r1,#0]
    008118  bf00              NOP
                      |L1.33050|
    00811a  48aa              LDR      r0,|L1.33732|
    00811c  7800              LDRB     r0,[r0,#0]  ; uR0
    00811e  1e40              SUBS     r0,r0,#1
    008120  f01000ff          ANDS     r0,r0,#0xff
    008124  49a7              LDR      r1,|L1.33732|
    008126  7008              STRB     r0,[r1,#0]
    008128  d1f7              BNE      |L1.33050|
    ;;;7548       __nop();__nop();__nop();
    00812a  bf00              NOP
    00812c  bf00              NOP
    00812e  bf00              NOP
    

  • ;;;7549       bR1.B.Bit05=Comm_LineIn_Port;//
    008130  48a3              LDR      r0,|L1.33728|
    008132  6800              LDR      r0,[r0,#0]  ; GPIO_C
    008134  6840              LDR      r0,[r0,#4]
    008136  f3c021c0          UBFX     r1,r0,#11,#1
    00813a  f89d0004          LDRB     r0,[sp,#4]
    00813e  f3611045          BFI      r0,r1,#5,#1
    008142  9001              STR      r0,[sp,#4]
    ;;;7550       usRDelay(17);
    008144  2011              MOVS     r0,#0x11
    008146  499f              LDR      r1,|L1.33732|
    008148  7008              STRB     r0,[r1,#0]
    00814a  bf00              NOP
                      |L1.33100|
    00814c  489d              LDR      r0,|L1.33732|
    00814e  7800              LDRB     r0,[r0,#0]  ; uR0
    008150  1e40              SUBS     r0,r0,#1
    008152  f01000ff          ANDS     r0,r0,#0xff
    008156  499b              LDR      r1,|L1.33732|
    008158  7008              STRB     r0,[r1,#0]
    00815a  d1f7              BNE      |L1.33100|
    ;;;7551       __nop();__nop();__nop();
    00815c  bf00              NOP
    00815e  bf00              NOP
    008160  bf00              NOP
    ;;;7552       bR1.B.Bit04=Comm_LineIn_Port;//
    008162  4897              LDR      r0,|L1.33728|
    008164  6800              LDR      r0,[r0,#0]  ; GPIO_C
    008166  6840              LDR      r0,[r0,#4]
    008168  f3c021c0          UBFX     r1,r0,#11,#1
    00816c  f89d0004          LDRB     r0,[sp,#4]
    008170  f3611004          BFI      r0,r1,#4,#1
    008174  9001              STR      r0,[sp,#4]
    ;;;7553       usRDelay(17);
    008176  2011              MOVS     r0,#0x11
    008178  4992              LDR      r1,|L1.33732|
    00817a  7008              STRB     r0,[r1,#0]
    00817c  bf00              NOP
                      |L1.33150|
    00817e  4891              LDR      r0,|L1.33732|
    008180  7800              LDRB     r0,[r0,#0]  ; uR0
    008182  1e40              SUBS     r0,r0,#1
    008184  f01000ff          ANDS     r0,r0,#0xff
    008188  498e              LDR      r1,|L1.33732|
    00818a  7008              STRB     r0,[r1,#0]
    00818c  d1f7              BNE      |L1.33150|
    ;;;7554       __nop();__nop();
    00818e  bf00              NOP
    008190  bf00              NOP
    ;;;7555       bR1.B.Bit03=Comm_LineIn_Port;//
    008192  488b              LDR      r0,|L1.33728|
    008194  6800              LDR      r0,[r0,#0]  ; GPIO_C
    008196  6840              LDR      r0,[r0,#4]
    008198  f3c021c0          UBFX     r1,r0,#11,#1
    00819c  f89d0004          LDRB     r0,[sp,#4]
    0081a0  f36100c3          BFI      r0,r1,#3,#1
    0081a4  9001              STR      r0,[sp,#4]
    ;;;7556       usRDelay(17);
    0081a6  2011              MOVS     r0,#0x11
    0081a8  4986              LDR      r1,|L1.33732|
    0081aa  7008              STRB     r0,[r1,#0]
    0081ac  bf00              NOP
                      |L1.33198|
    0081ae  4885              LDR      r0,|L1.33732|
    0081b0  7800              LDRB     r0,[r0,#0]  ; uR0
    0081b2  1e40              SUBS     r0,r0,#1
    0081b4  f01000ff          ANDS     r0,r0,#0xff
    0081b8  4982              LDR      r1,|L1.33732|
    0081ba  7008              STRB     r0,[r1,#0]
    0081bc  d1f7              BNE      |L1.33198|
    ;;;7557       __nop();__nop();
    0081be  bf00              NOP
    0081c0  bf00              NOP
    

  • .
    .
    .
    .. (skip).
    .
    .
    
    .
    .
    
    ;;;7581       Comm_LineOut_Port=SendData.B.Bit02;
    00835e  f89d0000          LDRB     r0,[sp,#0]
    008362  f3c00180          UBFX     r1,r0,#2,#1
    008366  4816              LDR      r0,|L1.33728|
    008368  6800              LDR      r0,[r0,#0]  ; GPIO_C
    00836a  6800              LDR      r0,[r0,#0]
    00836c  f36120cb          BFI      r0,r1,#11,#1
    008370  4913              LDR      r1,|L1.33728|
    008372  6809              LDR      r1,[r1,#0]  ; GPIO_C
    008374  6008              STR      r0,[r1,#0]
    ;;;7582       usRDelay(17);
    008376  2011              MOVS     r0,#0x11
    008378  4912              LDR      r1,|L1.33732|
    00837a  7008              STRB     r0,[r1,#0]
    00837c  bf00              NOP
                      |L1.33662|
    00837e  4811              LDR      r0,|L1.33732|
    008380  7800              LDRB     r0,[r0,#0]  ; uR0
    008382  1e40              SUBS     r0,r0,#1
    008384  f01000ff          ANDS     r0,r0,#0xff
    008388  490e              LDR      r1,|L1.33732|
    00838a  7008              STRB     r0,[r1,#0]
    00838c  d1f7              BNE      |L1.33662|
    ;;;7583       Comm_LineOut_Port=SendData.B.Bit01;
    00838e  f89d0000          LDRB     r0,[sp,#0]
    008392  f3c00140          UBFX     r1,r0,#1,#1
    008396  480a              LDR      r0,|L1.33728|
    008398  6800              LDR      r0,[r0,#0]  ; GPIO_C
    00839a  6800              LDR      r0,[r0,#0]
    00839c  f36120cb          BFI      r0,r1,#11,#1
    0083a0  4907              LDR      r1,|L1.33728|
    0083a2  6809              LDR      r1,[r1,#0]  ; GPIO_C
    0083a4  6008              STR      r0,[r1,#0]
    ;;;7584       usRDelay(17);
    0083a6  2011              MOVS     r0,#0x11
    0083a8  4906              LDR      r1,|L1.33732|
    0083aa  7008              STRB     r0,[r1,#0]
    0083ac  bf00              NOP
                      |L1.33710|
    0083ae  e00b              B        |L1.33736|
                      |L1.33712|
                              DCD      TimeAlarmFlags
                      |L1.33716|
                              DCD      PwrOn_Redy_Cnt
                      |L1.33720|
                              DCD      TimeFlags
                      |L1.33724|
                              DCD      PCU_C
                      |L1.33728|
                              DCD      GPIO_C
                      |L1.33732|
                              DCD      uR0
                      |L1.33736|
    0083c8  48fb              LDR      r0,|L1.34744|
    0083ca  7800              LDRB     r0,[r0,#0]  ; uR0
    0083cc  1e40              SUBS     r0,r0,#1
    0083ce  f01000ff          ANDS     r0,r0,#0xff
    0083d2  49f9              LDR      r1,|L1.34744|
    0083d4  7008              STRB     r0,[r1,#0]
    0083d6  d1ea              BNE      |L1.33710|
    ;;;7585       Comm_LineOut_Port=SendData.B.Bit00;
    0083d8  f89d0000          LDRB     r0,[sp,#0]
    0083dc  49f7              LDR      r1,|L1.34748|
    0083de  6809              LDR      r1,[r1,#0]  ; GPIO_C
    0083e0  6809              LDR      r1,[r1,#0]
    0083e2  f36021cb          BFI      r1,r0,#11,#1
    0083e6  48f5              LDR      r0,|L1.34748|
    0083e8  6800              LDR      r0,[r0,#0]  ; GPIO_C
    0083ea  6001              STR      r1,[r0,#0]
    ;;;7586       usRDelay(17);
    0083ec  2011              MOVS     r0,#0x11
    0083ee  49f2              LDR      r1,|L1.34744|
    0083f0  7008              STRB     r0,[r1,#0]
    0083f2  bf00              NOP
                      |L1.33780|
    0083f4  48f0              LDR      r0,|L1.34744|
    0083f6  7800              LDRB     r0,[r0,#0]  ; uR0
    0083f8  1e40              SUBS     r0,r0,#1
    0083fa  f01000ff          ANDS     r0,r0,#0xff
    0083fe  49ee              LDR      r1,|L1.34744|
    008400  7008              STRB     r0,[r1,#0]
    008402  d1f7              BNE      |L1.33780|
    ;;;7587
    ;;;7588       Comm_LineOut_Port=1;
    008404  48ed              LDR      r0,|L1.34748|
    008406  6800              LDR      r0,[r0,#0]  ; GPIO_C
    008408  6800              LDR      r0,[r0,#0]
    00840a  f4206000          BIC      r0,r0,#0x800
    00840e  f5006000          ADD      r0,r0,#0x800
    008412  49ea              LDR      r1,|L1.34748|
    008414  6809              LDR      r1,[r1,#0]  ; GPIO_C
    008416  6008              STR      r0,[r1,#0]
    ;;;7589       CSP_PCU_Set_Direction_Type(PCU_C, PIN_11, PnCR_INPUT_LOGIC);//ìž…ë ¥
    008418  2202              MOVS     r2,#2
    00841a  210b              MOVS     r1,#0xb
    00841c  48e8              LDR      r0,|L1.34752|
    00841e  6800              LDR      r0,[r0,#0]  ; PCU_C
    008420  f7fffffe          BL       CSP_PCU_Set_Direction_Type
    ;;;7590
    ;;;7591       __enable_irq();
    008424  b662              CPSIE    i
    ;;;7592
    ;;;7593         return (UINT8)bR1.U;
    008426  f89d0004          LDRB     r0,[sp,#4]
    ;;;7594
    ;;;7595   }
    00842a  bd1c              POP      {r2-r4,pc}
    ;;;7596
                              ENDP
    

  • Why would you want to remove it?

  • Why would you want to remove it?

    I'd go further. Remove it and watch your code fail.

    The compiler and linker know so much more about how to build an executable image than the coder. Let it do it's job and you concentrate on getting the code doing what is needed.

  • Sorry but this mcu is synchronized other system.
    So I have to keep strict time.
    Helpless situation. I have to check micro second time.

  • I won't care this code if it's located other places.
    but I shoud care this function specifically.
    (specifically... __disable_irq(); ~ __enable_irq();)

  • Can I have any way prohibit this code specification area by preprocessor?

  • If you need to control and guarantee the specific instruction sequences, then why are you even thinking of doing this in any high-level language?!

    If you rally need to control and guarantee the specific instruction sequences, then you need to write in assembler yourself.

    But I cannot help thinking that this is the wrong way to go about "synchronising" your systems ...

  • Code looks unnecessarily verbose, the use of optimization would trim it significantly.

    The literal pool needs to be placed close to where it is referenced based on the PC relative load used to access it. Again the verboseness of the code plays against you here.

    Figure out what the time critical code actually is, and write that in assembler. You can use the LTORG directive to control the placement of the literals, which you'd typically place at the end of a function, or after a hard/unconditional branch.

    A lot of CM3 implementation have a instruction cycle counter built in for testing/evaluating execution time.