//online parser: 
https://www.bccn.net/run/
#include <stdio.h>
typedef unsigned char reg;
#define BIT_MASK4
  (reg)0xEF
#define BIT_CLR567
  (reg)0x1F
#define BIT_SET567(_r)
  (reg)(_r & 0xE0)
#define BIT_MASK4SR(_r, _c)
  (reg)((_r & BIT_CLR567) >> _c)
#define BIT_BAOBAO(_r, _c)
  (reg)(BIT_SET567(_r) | BIT_MASK4SR(_r, _c))
#define FR_FLAG
#define BIT4
  (reg)(1 << 2)
#define BIT_CLRX(_idx)
  (reg)(0xFF >> (_idx - 1))
#define BIT_SETX(_r, _idx)
  (reg)(_r & (0xFF << (_idx + 1)))
#define BIT_MASKXSR(_r, _idx, _c)
  (reg)((_r & BIT_CLRX(_idx)) >> _c)
#define BIT_FR(_r, _idx, _c)
  (reg)(BIT_SETX(_r,_idx) | BIT_MASKXSR(_r, _idx, _c))
int main(int argc, char *argv[])
{
    reg r, *vreg = (char *)main;
    for (int i = 0; i < 125; i++) {
       r = vreg[i];
#ifndef FR_FLAG
       printf("%02d: r = 0x%x, r(%d) = 0x%x\n",
       (i + 1), r, 2, BIT_BAOBAO(r, 2));
#else
       printf("%02d: r = 0x%x, r(%d) = 0x%x\n",
       (i + 1), r, 2, BIT_FR(r, BIT4, 2));
#endif
    }
   
    return 0;
}
[此贴子已经被作者于2021-8-22 14:23编辑过]