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

📄 computer.cc

📁 ULM大学200-2002年竞赛题
💻 CC
字号:
// Problem   Simple Computer// Algorithm Simulation// Runtime   O(n)// Author    Walter Guttmann// Date      26.04.2000#include <cassert>#include <fstream>ifstream in ("computer.in");bool read_byte (int &x){  x = 0;  for (int b=0 ; b<8 ; b++)  {    char ch;    if (! (in >> ws >> ch)) return false;    assert (ch == '0' || ch == '1');    x = (x << 1) + (ch - '0');  }  return true;}main (){  int pc,accu,mem[32];  while (read_byte (mem[0]))  {    for (int i=1 ; i<32 ; i++)      assert (read_byte (mem[i]));    pc = accu = 0;    for (bool halt = false ; ! halt ; )    {      int instr = mem[pc];      pc = (pc + 1) % 32;      switch (instr >> 5)      {        case 0: mem[instr & 0x1f] = accu; break; // STA        case 1: accu = mem[instr & 0x1f]; break; // LDA        case 2: if (accu == 0) pc = instr & 0x1f; break; // BEQ        case 3: break; // NOP        case 4: accu = (accu + 255) % 256; break; // DEC        case 5: accu = (accu + 1) % 256; break; // INC        case 6: pc = instr & 0x1f; break; // JMP        case 7: halt = true; break; // HLT        default: assert (0);      }    }    for (int b=7 ; b>=0 ; b--)      cout << ((accu >> b) & 1);    cout << endl;  }  return 0;}

⌨️ 快捷键说明

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