Я определил некоторые значения, см. Ниже, и я не могу их правильно использовать.
#define add 000001
#define sub 000010
#define jmp 000111
#define IMM 10000
#define ADDR 10001
В моем коде я задаю адрес в шестнадцатеричном формате.
parameter1 = false;
parameter1 = false;
uint64_t data = 0xffffffff05001e00;
uint16_t vector[4];
memcpy(vector, &data, sizeof(uint64_t));
int currentPosition = 0;
while (currentPosition < 4) {
header = vector[currentPosition];//header
opcode = header >> 0xA & 0x3F;
src1 = header >> 0x5 & 0x1F;
src2 = header & 0x1F;
if (src1 == ADDR || src1 == IMM) { parameter1 = true; }
if (src2 == ADDR || src2 == IMM) { parameter2 = true; }
....
currentPosition++;
}
header = 1e00 в этом случае (потому что это вектор [0])
Вперед это будет сделано: opcode = 0x7, src1 = 0x10, src2 = 0x0.
Это означает в двоичном виде:000111 10000 00000 -> jmp IMM NULL
Когда первый , если вызывается , параметр1 должен получить значение true;но это никогда не случилось.Почему это происходит?Я не определил правильно значение IMM?
Спасибо !!!