我正在尝试用 C# 编写一个 CPU 模拟器。机器的对象如下所示:
class Machine
{
short a,b,c,d; //these are registers.
short[] ram=new short[0x10000]; //RAM organised as 65536 16-bit words
public void tick() { ... } //one instruction is processed
}
当我执行一条指令时,我有一个 switch 语句,它决定指令的结果将存储在什么中(寄存器或 RAM 字)
我希望能够做到这一点:
short* resultContainer;
if (destination == register)
{
switch (resultSymbol) //this is really an opcode, made a char for clarity
{
case 'a': resultContainer=&a;
case 'b': resultContainer=&b;
//etc
}
}
else
{
//must be a place in RAM
resultContainer = &RAM[location];
}
然后,当我执行指令时,我可以简单地存储结果,如:
*resultContainer = result;
我一直在试图弄清楚如何在不破坏 C# 的情况下做到这一点。
我如何使用以及可能还有其他我不知道的东西来完成unsafe{}
这个fixed(){ }
?