⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mult_div.c

📁 32cpu的代码
💻 C
字号:
#include <stdio.h>
#include <math.h>


long mult_hi(long opa,long opb){
long  opa_abs,opb_abs,result_hi,result_lo;
long  mult_hi_i,mult_hi_j;
unsigned long result_temp_hi,result_temp_lo;
//  opa=0xfff4524f;
 // opb=0x4534545;
  result_lo=0;
  result_hi=0;
  result_temp_lo=0;
  result_temp_hi=0;
  if(opa<0){
  opa_abs=0 - opa;
  }else{
  opa_abs=opa;
  }
  if(opb<0){ 
  opb_abs=0 - opb;
  }else{
   opb_abs=opb;
  }
//printf("0x%08x\n",opa_abs);
//printf("0x%08x\n",opb_abs);
  for(mult_hi_i=0;mult_hi_i<opb_abs;mult_hi_i++){
        if((result_temp_lo+opa_abs) < result_temp_lo){
               result_temp_hi=result_temp_hi + 1;
               result_temp_lo=result_temp_lo + opa_abs;
		}else{
			   result_temp_hi=result_temp_hi;
               result_temp_lo=result_temp_lo + opa_abs;
		}

  }
//printf("0x%08x\n",result_temp_hi);
//printf("0x%08x\n",result_temp_lo);
  if(((opa>0)&&(opb<0))||((opa<0)&&(opb>0))){
	  if(result_temp_lo==0){
	           result_lo=~result_temp_lo + 1;
		       result_hi=~result_temp_hi + 1;
	  }else{
	           result_lo=~result_temp_lo + 1;
		       result_hi=~result_temp_hi;
	  }
  }else{
	           result_lo=result_temp_lo;
		       result_hi=result_temp_hi;
  }
  return(result_hi);
//printf("0x%08x\n",result_hi);
//printf("0x%08x\n",result_lo);
}




long mult_lo(long opa,long opb){
long  opa_abs,opb_abs,result_hi,result_lo;
long  mult_lo_i,mult_lo_j;
unsigned long result_temp_hi,result_temp_lo;
//  opa=0xfff4524f;
//  opb=0x4534545;
  result_lo=0;
  result_hi=0;
  result_temp_lo=0;
  result_temp_hi=0;
  if(opa<0){
  opa_abs=0 - opa;
  }else{
  opa_abs=opa;
  }
  if(opb<0){ 
  opb_abs=0 - opb;
  }else{
   opb_abs=opb;
  }
//printf("0x%08x\n",opa_abs);
//printf("0x%08x\n",opb_abs);
  for(mult_lo_i=0;mult_lo_i<opb_abs;mult_lo_i++){
        if((result_temp_lo+opa_abs) < result_temp_lo){
               result_temp_hi=result_temp_hi + 1;
               result_temp_lo=result_temp_lo + opa_abs;
		}else{
			   result_temp_hi=result_temp_hi;
               result_temp_lo=result_temp_lo + opa_abs;
		}

  }
//printf("0x%08x\n",result_temp_hi);
//printf("0x%08x\n",result_temp_lo);
  if(((opa>0)&&(opb<0))||((opa<0)&&(opb>0))){
	  if(result_temp_lo==0){
	           result_lo=~result_temp_lo + 1;
		       result_hi=~result_temp_hi + 1;
	  }else{
	           result_lo=~result_temp_lo + 1;
		       result_hi=~result_temp_hi;
	  }
  }else{
	           result_lo=result_temp_lo;
		       result_hi=result_temp_hi;
  }
  return(result_lo);
//printf("0x%08x\n",result_hi);
//printf("0x%08x\n",result_lo);
}


long div_hi(long opa,long opb)
{
long result_div_hi,result_div_lo;

  result_div_lo=opa/opb;
  result_div_hi=opa%opb;
return(result_div_hi);
}


long div_lo(long opa,long opb)
{
long result_div_hi,result_div_lo;

  result_div_lo=opa/opb;
  result_div_hi=opa%opb;
return(result_div_lo);
}



long multu_hi(unsigned long opa,unsigned long opb){

unsigned long opa_abs,opb_abs;
unsigned long  mult_hi_i,mult_hi_j;
unsigned long result_temp_hi,result_temp_lo;
//  opa=0xfff4524f;
 // opb=0x4534545;

  result_temp_lo=0;
  result_temp_hi=0;
  opa_abs=(unsigned long)opa;
  opb_abs=(unsigned long)opb;
//printf("0x%08x\n",opa_abs);
//printf("0x%08x\n",opb_abs);
  for(mult_hi_i=0;mult_hi_i<opb_abs;mult_hi_i++){
        if((result_temp_lo+opa_abs) < result_temp_lo){
               result_temp_hi=result_temp_hi + 1;
               result_temp_lo=result_temp_lo + opa_abs;
		}else{
	       result_temp_hi=result_temp_hi;
               result_temp_lo=result_temp_lo + opa_abs;
		}

  }
//printf("0x%08x\n",result_temp_hi);
//printf("0x%08x\n",result_temp_lo);

  return(result_temp_hi);

}


long multu_lo(unsigned long opa,unsigned long opb){

unsigned long opa_abs,opb_abs;
unsigned long  mult_hi_i,mult_hi_j;
unsigned long result_temp_hi,result_temp_lo;
//  opa=0xfff4524f;
 // opb=0x4534545;

  result_temp_lo=0;
  result_temp_hi=0;
  opa_abs=(unsigned long)opa;
  opb_abs=(unsigned long)opb;
//printf("0x%08x\n",opa_abs);
//printf("0x%08x\n",opb_abs);
  for(mult_hi_i=0;mult_hi_i<opb_abs;mult_hi_i++){
        if((result_temp_lo+opa_abs) < result_temp_lo){
               result_temp_hi=result_temp_hi + 1;
               result_temp_lo=result_temp_lo + opa_abs;
		}else{
	       result_temp_hi=result_temp_hi;
               result_temp_lo=result_temp_lo + opa_abs;
		}

  }
//printf("0x%08x\n",result_temp_hi);
//printf("0x%08x\n",result_temp_lo);

  return(result_temp_lo);

}


long divu_hi(unsigned long opa,unsigned long opb)
{
unsigned long result_div_hi,result_div_lo;
  if(opb == 0){
  	result_div_lo=result_div_lo;
  	result_div_hi=result_div_hi;
   }else{
      result_div_lo=opa/opb;
      result_div_hi=opa%opb;
   }

return(result_div_hi);
}


long divu_lo(unsigned long opa,unsigned long opb)
{
unsigned long result_div_hi,result_div_lo;

  if(opb == 0){
  	result_div_lo=result_div_lo;
  	result_div_hi=result_div_hi;
   }else{
      result_div_lo=opa/opb;
      result_div_hi=opa%opb;
   }
return(result_div_lo);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -