C中的寄存器数组

时间:2018-05-10 02:49:41

标签: c

我需要一个存储寄存器的数组($ 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"}
                      };

但我现在迷失了,因为我不知道如何访问寄存器并检查它是否被使用,或者如何设置寄存器等等。

1 个答案:

答案 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系统编程

然后,您可以使用与上述相同的策略来存储和访问寄存器