Files

29 lines
1.1 KiB
C

#include <stdio.h>
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;
}