中断向量处理程序地址

Interrupt Vector Handler Address

我正在开发一个简单的 OS,它需要一个小的中断向量。为了理解这些概念,我一直在阅读中断向量。

很多资源都是这样引用的:

[1 ]http://www.embedded.com/electronics-blogs/programming-pointers/4025714/Modeling-interrupt-vectors#references

让我困惑的是我怎么知道中断处理程序的地址?我知道我需要为不同类型的中断创建不同的函数,但我怎么知道函数的地址呢?

我正在用 C 开发我的代码。

中断处理程序最后是一个函数。

一个函数从 "an address" 开始,您可以简单地使用它的名称来检索它。

以下代码将对传递的 %p 参数类型发出警告,但它是解释性的:

#include <stdio.h>

void dummy_ISR ( void )
{

}

int main ( void )
{
    printf("Address of function: %p\n", dummy_ISR);

}

您可以使用函数指针创建一个 table

#include<stdio.h>

int dummy_isr1 ( void )
{
    return 0;
}

int dummy_isr2 ( void )
{
    return 0;
}

typedef int (*functionPtr)(void);

functionPtr table[] =
{
        dummy_isr1,
        dummy_isr2
};


int main(void)
{
    for (size_t i=0; i<sizeof(table)/sizeof(table[0]); i++)
    {
        printf("Address %zu: %p\n", i, table[i]);
    }

   return 0;
}