我需要一个数组来存储寄存器($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"}
};
但是我现在很迷茫,因为我不知道如何访问寄存器并检查它是否正在使用,或者如何将寄存器设置为已使用,等等。
最佳答案
假设您不是指的是硬件的寄存器:(如果您指的是它们,请参见下文)
我宁愿像这样构建一个寄存器结构:
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系统编程
然后就可以使用与上面相同的策略来存储和访问寄存器
关于c - C 中的寄存器数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50264748/