29 lines
1.1 KiB
C
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;
|
|
}
|