Вт июн 04, 2019 16:59:24
ПростоНуб писал(а):Reflector, , исходя из того, что функция в C может возвращать структуру (не указатель на структуру, а именно структуру), то вернуть она может таким образом произвольное количество данных, причем даже различного типа.
В данном случае, использование структуры тоже упростило бы код.
Вт июн 04, 2019 17:09:59
Вт июн 04, 2019 17:37:49
Вт июн 04, 2019 17:42:52
Вт июн 04, 2019 17:52:15
Вт июн 04, 2019 18:05:05
uint64_t func()
{
void* ptr1 = &var1;
void* ptr2 = &var2;
return (uint32_t)ptr1 | (uint64_t)ptr2 << 32;
}
uint64_t q = func();
void* ptr1 = (void*)(uint32_t)q;
void* ptr2 = (void*)(uint32_t)(q >> 32);
bl 0x8000914 <func()>
movs r3, r0
movs r4, r1
movs r2, #166
lsls r2, r2, #2
adds r1, r7, r2
str r3, [r1, #0]
str r4, [r1, #4]
adds r3, r7, r2
ldr r3, [r3, #0]
movs r2, #165
lsls r2, r2, #2
adds r1, r7, r2
str r3, [r1, #0]
movs r3, #167
lsls r3, r3, #2
adds r3, r7, r3
ldr r3, [r3, #0]
movs r5, r3
movs r3, #0
movs r6, r3
movs r3, r5
movs r1, #164
lsls r1, r1, #2
adds r0, r7, r1
str r3, [r0, #0]
push {r4, r5, r6, r7, lr} ;func()
sub sp, #20
add r7, sp, #0
ldr r0, [pc, #52]
str r0, [r7, #12]
ldr r0, [pc, #52]
str r0, [r7, #8]
ldr r0, [r7, #12]
movs r1, r0
movs r0, #0
movs r2, r0
ldr r0, [r7, #8]
movs r5, r0
asrs r0, r0, #31
movs r6, r0
movs r4, r5
movs r0, #0
movs r3, r0
movs r0, r1
orrs r0, r3
str r0, [r7, #0]
orrs r2, r4
str r2, [r7, #4]
ldr r3, [r7, #0]
ldr r4, [r7, #4]
movs r0, r3
movs r1, r4
mov sp, r7
add sp, #20
pop {r4, r5, r6, r7, pc}
template<typename T1, typename T2 = T1>
struct Pair { T1 value1; T2 value2; };
Вт июн 04, 2019 18:10:03
Вт июн 04, 2019 18:11:06
Вт июн 04, 2019 18:26:45
Ср июн 05, 2019 15:08:22
Ср июн 05, 2019 15:17:40
Ср июн 05, 2019 16:15:33
Ср июн 05, 2019 16:41:05
Ср июн 05, 2019 16:54:32
Ср июн 05, 2019 17:01:20
Ср июн 05, 2019 18:22:05
Ср июн 05, 2019 18:25:16
Ср июн 05, 2019 18:27:25
Ср июн 05, 2019 18:34:12
Ср июн 05, 2019 21:40:44