#include typedef struct { unsigned long h; unsigned long l; } LongNum; typedef unsigned char byte; extern void task_regs(LongNum* a, LongNum* b, LongNum* result); extern unsigned long task_stack(); // Для передачи через Си потребуется функцкия-обертка extern unsigned long task_stack_wrapper(void* nums, byte bits); int main() { LongNum a = { 0x00000000, 0x01000000}; // По факту передача через стек) LongNum b = { 0x10100010, 0x0900000f}; LongNum c; task_regs(&a, &b, &c); printf("new big num is %lx %lx\n", c.h, c.l); // Проверим, что сложили +- корректно short int nums[4] = {88, 0, 11, 0}; // Порядок такой в демонстрационных целях unsigned long new = task_stack_wrapper(nums, (sizeof(short int) * 8)); // Тут я лишь иммитирую что числа не влезают. По факту же все отлично лезет printf("stacked number is %lu and should be 99\n", new); return 0; }