📄 fastfnctptr.c
字号:
#include <intrins.h>
/*
**
*/
#define LJMP_OPCODE 0x02
#define DISABLE_WARNING_C280(arg) arg=arg;
/*
**代刚ノ fnct
*/
void AFnct0(int j)
{
DISABLE_WARNING_C280(j);
}
void AFnct1(int j, int k)
{
DISABLE_WARNING_C280(j);
DISABLE_WARNING_C280(k);
}
void BFnct0(int j)
{
DISABLE_WARNING_C280(j);
}
void BFnct1(int j, int k)
{
DISABLE_WARNING_C280(j);
DISABLE_WARNING_C280(k);
}
//
// main()
typedef struct _DEVICE_API{
unsigned long Fnct0;
unsigned long Fnct1;
}DEVICE_API;
xdata DEVICE_API XXXFNCT_TBL[2] _at_ 0x1000;
code unsigned int DEVICE_API_TBL [8] =
{
LJMP_OPCODE, AFnct0,
LJMP_OPCODE, AFnct1,
LJMP_OPCODE, BFnct0,
LJMP_OPCODE, BFnct1,
};
#define XXXFnct0(arg) ((void (code *) (int)) 0x1000) (arg)
#define XXXFnct1(arg0,arg1) ((void (code *) (int,int)) 0x1004) (arg0, arg1)
void SwitchDevice(char lun)
{
*((DEVICE_API*)XXXFNCT_TBL) = ((DEVICE_API*)DEVICE_API_TBL)[lun];
}
void main(void)
{
SwitchDevice(0);
XXXFnct0(23);
XXXFnct1(23,88);
SwitchDevice(1);
XXXFnct0(23);
XXXFnct1(23,88);
while(1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -