Передача 32-битных указателей в определенной структуре на новый 64-битный процессор ARM
Попытка чтения из унаследованного кода, который использует структуру 32-битных указателей, созданных в 32-битном процессоре, на другом оборудовании, которое передается в общей области памяти с 64-битным процессором с использованием 64-битных указателей.
struct _32bit_addr_ptr
{
unsigned int *addr1;
unsigned int *addr2;
unsigned int *addr3;
}test;
test.addr1 = 0x12345678;
test.addr2 = 0x23456781;
test.addr3 = 0x34567812;
Таким образом, данные будут выглядеть примерно так.
блок данных с прямым порядком байтов будет выглядеть так:
1234 5678 2345 6781 3456 7812
Если я использую ту же структуру в 64-битном указателе, она, конечно, будет использовать 8 байтов на адрес и не даст правильных результатов.
Есть ли способ определить структуру в 64-битном процессоре в структуре без необходимости использовать структуру, которая не использует указатели и приведение вне структуры для ее перевода?
struct _32bit_address
{
unsigned int addr_value1;
unsigned int addr_value2;
unsigned int addr_value3;
}test2;
unsigned long long Addr_ptr = (unsigned long long *)(test2.addr_value1)