#include #include #include "simulator.h" int main(){ std::string temp; int machineBits, cacheSize, waySize, blockSize; short setSize; short offsetSize, tagSize, indexSize; std::cin >> temp >> temp >> machineBits; std::cin >> temp >> temp >> cacheSize; std::cin >> temp >> waySize; std::cin >> temp >> temp >> blockSize; setSize = cacheSize * 1024 / blockSize / waySize; std::cout << setSize << " sets" << std::endl << std::endl; offsetSize = log2(blockSize); indexSize = log2(setSize); tagSize = machineBits - offsetSize - indexSize; std::cout << "offset: " << offsetSize << std::endl; std::cout << "index : " << indexSize << std::endl; std::cout << "tag : " << tagSize << std::endl; CacheSim::Simulator sim(machineBits, setSize, waySize, tagSize); std::string action, address; bool status; std::vector> result; while(std::cin >> action >> address){ std::cout << "action: "<< action << " address: " << address << std::endl; status = sim.read(address); result.push_back(std::make_pair(address, status)); std::cout << std::endl << std::endl; } int allCount = 0, hitCount = 0; for(int i=0; i