|
现将我用汇编扩充的办法的程序列于下:
【C程序文件中的声明】
/********** 程序空间访问宏 **********/
/* 说明:程序空间的数据,一般可以定义成const型的全局变量的形式 */
/* 读取程序空间的代码(getcode与getcode_p实际使用同一汇编子程序) */
unsigned int getcode(const unsigned int * txtaddr); /* 读取程序空间的代码 */
/* 子程序地址类型PSUBROT */
typedef void (*PSUBROT)();
/* 读取程序空间的指针型代码 */
PSUBROT getcode_p(const PSUBROT * txtaddr); /* 读取程序空间的代码 */
/* 读取分支表,模型:PSUBROT getbranch(const PSUBROT * addrtbl, unsigned int i); */
#define getbranch(addrtbl,i) (getcode_p((addrtbl) + (i)))
/* 例:设有分支表如下(作为全局变量) */
/* const PSUBROT branchtable[5] = {sub0,sub1,sub2,sub3,sub4}; */
/* 则程序语句: (*getbrunch(brunchtable,3))(); */
/* 即可执行sub3(); */
(待后续) |
|