testgcdocp.c

来自「cpu的源码」· C语言 代码 · 共 72 行

C
72
字号
/*#define OCP_MAP      0x7FFFFF00#define OCP_MAP_STOP 0x7FFFFFFC*/#define ADDR_IN_RESET   0x7FFFFF00 #define ADDR_IN_X       0x7FFFFF04#define ADDR_IN_Y       0x7FFFFF08#define ADDR_IN_RUN     0x7FFFFF0C#define ADDR_OUT_DONE   0x7FFFFF10#define ADDR_OUT_RESULT 0x7FFFFF14typedef unsigned int address;typedef unsigned int value;#define ocpload(address, load) { \unsigned int *ctrlload = (unsigned int *) address; \load =  *ctrlload;}#define ocpstore(address,save) { \unsigned int *ctrlstore = (unsigned int *) address; \*ctrlstore = save;}int main(void){  int i;  value gcd_done, gcd_result, result;   //asm("nop");  //asm("nop");  asm("nop");  // reset gcd  ocpstore(ADDR_IN_RESET,1);    // stop reset gcd  ocpstore(ADDR_IN_RESET,0);  // save x=22  ocpstore(ADDR_IN_X,122);  // save y=20  ocpstore(ADDR_IN_Y,20);  // gcd run  ocpstore(ADDR_IN_RUN,1);  // stop run  ocpstore(ADDR_IN_RUN,0);  // test for gcd is done  ocpload(ADDR_OUT_DONE,gcd_done);  while(gcd_done != 1){    for(i = 0; i<4; i++);    ocpload(ADDR_OUT_DONE,gcd_done);  }  // get gcd result  ocpload(ADDR_OUT_RESULT,gcd_result);  if(2 == gcd_result)      result = -1;  else    result = 0xFFFF;  while(1);  return 0;}

⌨️ 快捷键说明

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