check_asm.sh
上传用户:lgb322
上传日期:2013-02-24
资源大小:30529k
文件大小:1k
源码类别:

嵌入式Linux

开发平台:

Unix_Linux

  1. #!/bin/sh
  2. case $1 in
  3.   -printf)
  4.     sed -n -e '/^#/d;/struct[  ]*'$2'_struct[  ]*{/,/};/p' < $3 | sed '/struct[  ]*'$2'_struct[  ]*{/d;/:[0-9]*[  ]*;/d;/^[  ]*$/d;/};/d;s/^[  ]*//;s/volatile[  ]*//;s/(unsigned|signed|struct)[  ]*//;s/([|__attribute__).*;[  ]*$//;s/(*//;s/)(.*)//;s/;[  ]*$//;s/^[^  ]*[  ]*//;s/,/
  5. /g' | sed 's/^[  *]*//;s/[  ]*$//;s/^.*$/printf ("#define AOFF_'$2'_ 0x%08x\n", check_asm_data[i++]); printf("#define ASIZ_'$2'_ 0x%08x\n", check_asm_data[i++]);/' >> $4
  6.     echo "printf ("#define ASIZ_$2\t0x%08x\n", check_asm_data[i++]);" >> $4
  7.   ;;
  8.   -data)
  9.     sed -n -e '/^#/d;/struct[  ]*'$2'_struct[  ]*{/,/};/p' < $3 | sed '/struct[  ]*'$2'_struct[  ]*{/d;/:[0-9]*[  ]*;/d;/^[  ]*$/d;/};/d;s/^[  ]*//;s/volatile[  ]*//;s/(unsigned|signed|struct)[  ]*//;s/([|__attribute__).*;[  ]*$//;s/(*//;s/)(.*)//;s/;[  ]*$//;s/^[^  ]*[  ]*//;s/,/
  10. /g' | sed 's/^[  *]*//;s/[  ]*$//;s/^.*$/ ((char *)&((struct '$2'_struct *)0)->) - ((char *)((struct '$2'_struct *)0)), sizeof(((struct '$2'_struct *)0)->),/' >> $4
  11.     echo " sizeof(struct $2_struct)," >> $4
  12.   ;;
  13.   -ints)
  14.     sed -n -e '/check_asm_data:/,/.size/p' <$2 | sed -e 's/check_asm_data://' -e 's/.size.*//' -e 's/.ident.*//' -e 's/.long[  ]([0-9]*)/1,/' >>$3
  15.   ;;
  16.   *)
  17.     exit 1
  18.   ;;
  19. esac
  20. exit 0