论坛: 编程破解 标题: 逻辑尺 复制本贴地址    
作者: SysHu0teR [syshunter]    版主   登录
代码:

int count =0;
void fun1(void)
{
count++;

static int f1=0;
f1++;
printf("[%d] call fun1: %d\n",count,f1);
}
void fun2(void)
{
count++;

static int f2=0;
f2++;
printf("[%d] call fun2: %d\n",count,f2);
}

void do_it(void (*f1)(void),void (*f2)(void),unsigned char rule)
{
/* 从右往左依次判断rule的每一位,如1则执行f1(),否则执行f2() */

unsigned char b=1;
int i;

for(i=1;i<=8;i++) {
if(rule&b)
f1();
else
f2();
b<<=1;
}
}

int main(void)
{
unsigned char i=5;  //00000101b
do_it(fun1,fun2,i);

return 1;
}



地主 发表时间: 06-12-21 21:36

回复: jhkdiy [jhkdiy]   版主   登录
还是看代码来的直接,不错的例子,逻辑尺和有限状态机有什么不同?

B1层 发表时间: 06-12-21 22:33

回复: SysHu0teR [syshunter]   版主   登录
写这东西只是最近看保护模式,想起大一时上汇编曾经介绍过这种逻辑尺,觉得有用,想起用C实现下,只不过效率比起直接判断CF标志来说差点。

我是专科出生,没专门学过编译,只听过两节课。有限状态机跟这个不一样,他是多种状态多种触发条件,在不同状态时通过不同的触发条件转换到另一个状态。

B2层 发表时间: 06-12-22 09:57

回复: kert_t8 [kert_t8]   论坛用户   登录


B3层 发表时间: 06-12-22 13:53

论坛: 编程破解

20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon

粤ICP备05087286号