我需要一个存储寄存器的数组($ t0,$ t1,...)以及它们是否被使用。
到目前为止,我得到了这个,其中第一个字段是寄存器名称,如果不使用寄存器,则第二个字段必须为0或1。
char* registers[2][10] = {
{"$t0", "0"},
{"$t1", "0"},
{"$t2", "0"},
{"$t3", "0"},
{"$t4", "0"},
{"$t5", "0"},
{"$t6", "0"},
{"$t7", "0"},
{"$t8", "0"},
{"$t9", "0"}
};
但我现在迷失了,因为我不知道如何访问寄存器并检查它是否被使用,或者如何设置寄存器等等。
答案 0 :(得分:0)
假设您不表示硬件的寄存器:(如果您的意思是,请参阅下文)
我宁愿像这样建立一个寄存器结构:
struct register {
int is_used;
char* name;
}
要存储和访问它们,数组就足够了:
struct register* registers;
然后你可以访问你的"寄存器"例如:
registers[n].is_used //where n is the position of your register you want to refer
要访问硬件寄存器(我假设您的意思是汇编寄存器rax,rbx等),您可以使用内联汇编(请参阅此处linux和此处windows)不保证在Windows链接上,我没有为Windows系统编程
然后,您可以使用与上述相同的策略来存储和访问寄存器