亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? divc.c

?? realview22.rar
?? C
字號(hào):
/*  Optimal divide-by-constant code generator (ARM version)
    Copyright (C) Advanced RISC Machines
*/


#include <stdio.h>
#include <stdlib.h>

#define BANNER          "generated by ARM divc"

#define DIVIDE_BY_2_MINUS_1             0
#define DIVIDE_BY_2_PLUS_1              1


typedef unsigned int uint;


uint log2( uint n )
{
  uint bit, pow, logn;

  for( bit = 0, pow = 1; bit < 31; bit++, pow <<= 1 )
  {
    if( n == pow ) logn = bit;
  }

  return( logn );
}


int powerof2( int n )
{
  return( n == ( n & (-n) ) );
}


void dodiv2m1( uint logd, uint logmsb )
{
  /* Output instructions to do division by 2^n - 1 */
  printf( "\tMOV     a1, a1, lsr #1\n" );

  while( logd < 32 )
  {
    printf( "\tADD     a1, a1, a1, lsr #%d\n", logd );
    logd <<= 1;
  }
  printf( "\tMOV     a1, a1, lsr #%d\n", logmsb - 1 );
}


void dodiv2p1( uint logd, uint logmsb )
{
  /* Output instructions to do division by 2^n + 1 */
  printf( "\tSUB     a1, a1, a1, lsr #%d\n", logd );

  while( logd < 16 )
  {
    logd <<= 1;
    printf( "\tADD     a1, a1, a1, lsr #%d\n", logd );
  }

  printf( "\tMOV     a1, a1, lsr #%d\n", logmsb );
}


void loada4( uint type, uint lsb, uint msb )
{
  /* Constant is too big to be used as an immediate constant, */
  /* so load it into register a4.                             */
  printf( "\tMOV     a4, #0x%x\n", msb );

  switch( type )
  {
  case DIVIDE_BY_2_MINUS_1:
    printf( "\tSUB     a4, a4, #0x%x\n", lsb );
    break;

  case DIVIDE_BY_2_PLUS_1:
    printf( "\tADD     a4, a4, #0x%x\n", lsb );
    break;

  default:
    fputs( "Internal error", stderr );
  }
}


void divideby2( uint type, uint n, uint lsb, uint msb )
{
  uint loglsb;
  uint logmsb;
  uint usinga4;

  loglsb = log2( lsb );
  logmsb = log2( msb );

  printf( "; %s\n\n", BANNER );
  printf( "\tCODE32\n\n" );
  printf( "\tAREA |div%d$code|, CODE, READONLY\n\n", n );
  printf( "\tEXPORT udiv%d\n\n", n );
  printf( "udiv%d\n", n );
  printf( "; takes argument in a1\n" );
  printf( "; returns quotient in a1, remainder in a2\n" );
  printf( "; cycles could be saved if only divide or remainder is required\n" );

  usinga4 = ( n >> loglsb ) > 255;
  if( usinga4 )
  {
    loada4( type, lsb, msb );
    printf( "\tSUB     a2, a1, a4\n" );
  }
  else
  {
    printf( "\tSUB     a2, a1, #%d\n", n );
  }

  /* 1/n as a binary number consists of a simple repeating pattern     */
  /* The multiply by 1/n is expanded as a sequence of ARM instructions */
  /* (there is a rounding error which must be corrected later)         */
  switch( type )
  {
  case DIVIDE_BY_2_MINUS_1:
    dodiv2m1( logmsb - loglsb, logmsb );
    /* Now do multiply-by-n */
    printf( "\tRSB     a3, a1, a1, lsl #%d\n", logmsb - loglsb );
    break;

  case DIVIDE_BY_2_PLUS_1:
    dodiv2p1( logmsb - loglsb, logmsb );
    /* Now do multiply-by-n */
    printf( "\tADD     a3, a1, a1, lsl #%d\n", logmsb - loglsb );
    break;

  default:
    fputs( "Internal error", stderr );
  }

  /* Subtract from adjusted original to obtain remainder */
  printf( "\tSUBS    a2, a2, a3, lsl #%d\n", loglsb );

  /* Apply corrections */
  printf( "\tADDPL   a1, a1, #1\n" );
  if( usinga4 )
  {
    printf( "\tADDMI   a2, a2, a4\n" );
  }
  else
  {
    printf( "\tADDMI   a2, a2, #%d\n", n );
  }

  /* Additional test required for divide-by-3, as result could be  */
  /* off by 2 lsb due to accumulated rounding errors.              */
  if( n == 3 )
  {
    printf( "\tCMP     a2, #3\n" );
    printf( "\tADDGE   a1, a1, #1\n" );
    printf( "\tSUBGE   a2, a2, #3\n" );
  }

  printf( "\tMOV     pc, lr\n\n" );
  printf( "\tEND\n" );
}


int main( int argc, char *argv[] )
{
  if( argc != 2 )
  {
    printf( "Usage: divc <n>\n" );
    printf( "Generates optimal ARM code for divide-by-constant\n" );
    printf( "where <n> is one of (2^n-2^m) or (2^n+2^m) eg. 10\n" );
  }
  else
  {
    int num;

    num = atoi( argv[ 1 ] );
    if( num <= 1 )
    {
      fprintf( stderr, "%d is not sensible\n", num );
    }
    else
    {
      uint lsb = 1;

      /* find least-significant bit */
      while( ( num & lsb ) == 0 )
      {
        lsb <<= 1;
      }

      if( powerof2( num ) )
      {
        fprintf( stderr, "%d is an easy case\n", num );
      }
      else if( powerof2( num + lsb ) )
      {
        divideby2( DIVIDE_BY_2_MINUS_1, num, lsb, num + lsb );
      }
      else if( powerof2( num - lsb ) )
      {
        divideby2( DIVIDE_BY_2_PLUS_1, num, lsb, num - lsb );
      }
      else
      {
        fprintf( stderr, "%d is not one of (2^n-2^m) or (2^n+2^m)\n", num );
      }
    }
  }
  return( 0 );
}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久噜噜噜久久人人看| 91片在线免费观看| 成人黄页在线观看| 欧美在线看片a免费观看| 在线不卡一区二区| 久久精品一区二区三区不卡| 亚洲欧美日韩电影| 免费高清视频精品| 97精品国产露脸对白| 欧美美女bb生活片| 国产三级精品三级在线专区| 亚洲精品成人精品456| 精品在线观看免费| 日本韩国精品在线| 精品国产乱码91久久久久久网站| 国产精品理伦片| 免费精品视频最新在线| 97久久精品人人澡人人爽| 日韩精品一区在线| 自拍视频在线观看一区二区| 另类小说图片综合网| 色综合久久久久网| 欧美电视剧免费全集观看| 亚洲婷婷综合色高清在线| 紧缚奴在线一区二区三区| 91捆绑美女网站| 亚洲精品在线观| 午夜不卡av在线| www.日韩av| 亚洲精品一区二区三区精华液| 一区二区三区精品视频| 国产麻豆精品一区二区| 91精品国产入口在线| 亚洲三级在线看| 国产精品99久久不卡二区| 51久久夜色精品国产麻豆| 一区二区在线观看免费视频播放| 极品少妇xxxx精品少妇| 欧美日韩另类一区| 亚洲日本丝袜连裤袜办公室| 国产寡妇亲子伦一区二区| 宅男噜噜噜66一区二区66| 亚洲码国产岛国毛片在线| 国产+成+人+亚洲欧洲自线| 欧美一区二区观看视频| 亚洲永久精品大片| av综合在线播放| 国产精品视频在线看| 国产在线麻豆精品观看| 91精品国产综合久久精品| 亚洲综合在线视频| 成人app网站| 亚洲国产精品ⅴa在线观看| 久久se这里有精品| 日韩一区二区免费在线电影| 亚洲国产裸拍裸体视频在线观看乱了 | 免费成人美女在线观看.| 欧美三级资源在线| 亚洲黄色小说网站| 91色|porny| 亚洲乱码中文字幕| 91亚洲男人天堂| 亚洲视频一区二区在线| 成人av资源网站| 国产精品久久久久aaaa| 丰满亚洲少妇av| 国产亚洲女人久久久久毛片| 国产美女视频91| 久久久久99精品一区| 国产乱国产乱300精品| 久久综合资源网| 国产一区二区三区国产| 亚洲精品一区二区在线观看| 国内精品伊人久久久久av影院| 欧美成人一区二区| 久久不见久久见免费视频1| 欧美va亚洲va国产综合| 国产综合色精品一区二区三区| 久久影音资源网| 国产传媒一区在线| 中文字幕在线不卡视频| 91麻豆国产精品久久| 亚洲在线成人精品| 91精品国产综合久久精品| 蜜桃av噜噜一区二区三区小说| www久久久久| 成人妖精视频yjsp地址| 17c精品麻豆一区二区免费| 色欧美片视频在线观看在线视频| 一区二区在线观看免费视频播放| 在线观看日韩精品| 日欧美一区二区| 精品国产电影一区二区| 国产成人在线免费观看| 国产精品护士白丝一区av| 色视频成人在线观看免| 日韩成人精品在线| 欧美精品一区在线观看| 菠萝蜜视频在线观看一区| 亚洲你懂的在线视频| 国产蜜臀97一区二区三区| 国产.精品.日韩.另类.中文.在线.播放 | 亚洲va中文字幕| 日韩欧美国产精品一区| 成人免费视频国产在线观看| 亚洲免费色视频| 日韩精品一区二区三区在线观看| 国产精品一区二区视频| 亚洲色图一区二区三区| 69成人精品免费视频| 国产精品一区二区无线| 一区二区三区国产精华| 欧美一级理论片| 日本道在线观看一区二区| 蜜臀av在线播放一区二区三区| 国产女同性恋一区二区| 欧美日韩综合一区| 国产一区二三区| 亚洲动漫第一页| 国产亚洲一二三区| 欧美日韩久久一区二区| 国产白丝精品91爽爽久久 | 在线电影欧美成精品| 国产成人亚洲综合a∨猫咪| 一个色妞综合视频在线观看| 日韩欧美成人激情| 一本久道久久综合中文字幕| 毛片基地黄久久久久久天堂| 亚洲欧美一区二区视频| 日韩一区二区三区av| 色呦呦国产精品| 韩国三级在线一区| 午夜视频在线观看一区二区三区| 亚洲国产高清不卡| 7777精品伊人久久久大香线蕉 | 久久影院视频免费| 欧美日韩在线综合| 丰满白嫩尤物一区二区| 婷婷久久综合九色综合伊人色| 亚洲国产高清在线观看视频| 欧美一区二区三区视频免费| 99久久er热在这里只有精品66| 理论电影国产精品| 亚洲一区二区欧美日韩| 国产精品视频免费看| 日韩一区二区在线看片| 色噜噜狠狠色综合中国| 国产成人鲁色资源国产91色综| 日本不卡在线视频| 亚洲免费伊人电影| 国产精品日日摸夜夜摸av| 欧美精品一区视频| 日韩一卡二卡三卡国产欧美| 欧美羞羞免费网站| a在线播放不卡| 国产激情一区二区三区四区 | 日韩一区二区电影在线| 在线一区二区观看| 国产福利91精品一区| 久久av资源网| 丝袜美腿亚洲色图| 亚洲最色的网站| 亚洲女同女同女同女同女同69| 国产日韩av一区| 久久久午夜精品| 精品国产电影一区二区| 日韩一区二区电影网| 欧美一级专区免费大片| 欧美人狂配大交3d怪物一区| 欧美亚洲综合在线| 欧美亚洲国产一卡| 欧美性猛片aaaaaaa做受| 日韩你懂的在线观看| 91精品国产色综合久久| 欧美日韩日日夜夜| 欧美亚男人的天堂| 在线观看国产91| 欧美亚洲尤物久久| 欧美最新大片在线看| 欧美亚洲综合一区| 欧美日韩精品欧美日韩精品| 欧美日韩一区成人| 欧美三级一区二区| 欧美日韩国产另类一区| 欧美日韩一级视频| 欧美日韩中文字幕一区二区| 欧美日韩在线播放三区四区| 欧美日韩视频在线第一区| 欧美日韩综合不卡| 91精品黄色片免费大全| 日韩欧美中文字幕精品| 欧美xxxxxxxx| 欧美成人一区二区三区片免费| 337p粉嫩大胆噜噜噜噜噜91av | 成人动漫视频在线| 99久久夜色精品国产网站| 色视频一区二区| 欧美日韩国产乱码电影| 日韩天堂在线观看| 久久综合九色综合欧美就去吻|