main.c

来自「ARM处理器软中断处理。a_swi.s文件是最开始处理的SWI句柄,用ARM汇编」· C语言 代码 · 共 51 行

C
51
字号

#include <stdio.h>
#include "swi.h"

unsigned *swi_vec = (unsigned *)0x08;

extern void A_SWI_Handler(void);


unsigned Install_Handler( unsigned routine, unsigned *vector )
{
    unsigned vec, old_vec;

    vec = (routine - (unsigned)vector - 8) >> 2;
    if (vec & 0xff000000)
    {
        printf("Handler greater than 32MBytes from vector");
    }
    vec = 0xea000000 | vec;     /* OR in 'branch always' code */

    old_vec = *vector;
    *vector = vec;
    return (old_vec);
}

int main( void )
{
    int result1, result2;
    struct four_results res_3;

    Install_Handler( (unsigned) A_SWI_Handler, swi_vec );

    printf("result1 = multiply_two( 2, 4 ) = %d\n", result1 = multiply_two( 2, 4 ));

    printf("result2 = multiply_two( 3, 6 ) = %d\n", result2 = multiply_two( 3, 6 ));

    printf("add_two( result1, result2 ) = %d\n", add_two( result1, result2 ));

    printf("add_multiply_two( 2, 4, 3, 6 ) = %d\n", add_multiply_two( 2, 4, 3, 6 ));

    res_3 = many_operations( 12, 4, 3, 1 );

    printf("res_3.a = %d\n", res_3.a );
    printf("res_3.b = %d\n", res_3.b );
    printf("res_3.c = %d\n", res_3.c );
    printf("res_3.d = %d\n", res_3.d );

    return 0;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?