Я пытаюсь изменить симулятор MIPS для отображения содержимого его регистров во время выполнения. Мой вопрос касается того, как я планирую это сделать. Так...
У меня есть файл file1.cpp и file2.cpp. В файле file1.cpp есть локальная общедоступная переменная, называемая
typedef long ValueGPR;
ValueGPR reg[33];
к которому я хочу получить доступ в файле2.cpp. Каждый из этих файлов имеет заголовочный файл. File2.cpp содержит функцию, которая итеративно отслеживает выполнение программной инструкции за инструкцией, что делает его идеальным местом для вставки printf("REG[%d]:%d\n",i,reg[i]); оператор или что-то в этом роде, но reg является локальной переменной в файле1.cpp. Как мне сшить что-то, что позволит мне получить доступ к этой переменной reg?
Вот как на самом деле выглядят оба файла (подумав об этом еще немного): «File1.h»
typedef long ValueGPR;
...
class ThreadContext {
...
public:
ValueGPR reg[33];
...
...
}
...
"Файл2.cpp"
...
#include ".../ThreadContext.h"
...
long ExecutionFlow::exeInst(void) {
...
//ADD PRINTF OF reg[1] - reg[32] HERE
...
}
...
typedef long ValueGPR; public: ValueGPR reg[33];
- person Dan Snyder   schedule 06.07.2010reg
является членом класса (о чем, судя по вашим комментариям, судя по вашим комментариям), то менять его на глобальный было бы плохой идеей - вы получите неправильное поведение, если у вас есть более одного экземпляра класса сорт. Вместо этого вы должны найти способ передать либоreg
, либо объект, который его содержит, по ссылке на функцию вfile2.cpp
, которая хочет получить к нему доступ. - person Mike Seymour   schedule 06.07.2010