汉编卷土重来?

本文介绍了一种用于识别脚本代码中标签的方法,并提供了一个具体的函数实现。通过将特定的脚本语言标签替换为中文词汇,使得脚本更具可读性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

先看下面的程序:

然后大家猜猜是什么语言编写的呢?

其实是把脚本代码中的label进行汉字替换即可。先定义label替换的对子

如果=if
函数=function
否则=else
返回=return
新增=new
空=null
尝试=try
捕错=catch
变量=var

画图消息=WM_PAINT
获得设备上下文=GetDC
释放设备上下文=ReleaseDC
文本输出=TextOut
串长度=length
左鼠标按下消息=WM_LBUTTONDOWN
鼠标移动消息=WM_MOUSEMOVE
窗口销毁消息=WM_DESTROY
退出=Exit
产生实心刷子=CreateSolidBrush
产生GDI长方形=BuildGDIRect
填充长方形=FillRect
销毁GDI对象=DeleteObject
设置背景模式=SetBkMode
透明=TRANSPARENT
转换成整数=parseInt
消息窗=MessageBox
注册窗口类=RegisterClassEx

 

下面函数是提取脚本中的label:

  1. void Analyzelabel(char *code,int len,KeywordManager *m,LabelNumberList &list)
  2. {
  3.     int i;
  4.     tagLabelNumber label;
  5.     unsigned char *s=(unsigned char *)code;
  6.     for(i=0;i<len;i++)
  7.     {
  8.         if(s[i]>0x6F || (s[i]>='a' && s[i]<='z') || (s[i]>='A' && s[i]<='Z') || s[i]=='_')//charater
  9.         {
  10.             label.begin_pos=i;
  11.             if(s[i]>0x7F)
  12.                 i++;
  13.             while(s[i]>0x7F || (s[i]>='a' && s[i]<='z') || (s[i]>='A' && s[i]<='Z') || s[i]=='_' || (s[i]>='0' && s[i]<='9'))
  14.             {
  15.                 i++;
  16.                 if(s[i]>0x7F)
  17.                     i++;
  18.                 if(s[i]==0)
  19.                     break;
  20.             }
  21.             label.end_pos=i;
  22.             label.len=i-label.begin_pos;
  23.             memcpy(label.label,code+label.begin_pos,label.len);
  24.             label.label[label.len]=0;
  25.             label.type=eltLabel;
  26.             if(m->IsKeyword(label.label))
  27.             {
  28.                 label.type=eltKeyword;
  29.             }else
  30.             if(m->IsConstant(label.label))
  31.             {
  32.                 label.type=eltConstant;
  33.             }
  34.             list.push_back(label);
  35.         }else
  36.         if(s[i]=='/"' || s[i]=='/'')
  37.         {
  38.             label.begin_pos=i;
  39.             int count1;
  40.             int count2;
  41.             if(s[i]=='/"')
  42.             {
  43.                 count1=1;
  44.                 count2=0;
  45.             }else
  46.             {
  47.                 count1=0;
  48.                 count2=1;
  49.             }
  50.             i++;
  51.             while(count1>0 || count2>0)
  52.             {
  53.                 if(s[i]=='/"')
  54.                     count1--;
  55.                 else
  56.                 if(s[i]=='/'')
  57.                     count2--;
  58.                 else
  59.                 if(s[i]=='//')
  60.                 {
  61.                     i++;
  62.                 }
  63.                 i++;
  64.             }
  65.             label.end_pos=i;
  66.             label.len=i-label.begin_pos;
  67.             label.type=eltString;
  68.             list.push_back(label);
  69.         }
  70.     }
  71. }

然后逐个替换即可。是不是很容易?

 

这个看上去像IDE的程序 Duceland Widgets Engine 是含源的,从这里下载。

学习程必须明白几点: 1-中文和英文的地位是平等的,在计算机中也一样,不要褒英贬; 2-计算机的机器码是0和1,他既可以和英文对应也可以和中文对应; 3-英文程之所以占主导地位,是因为世界体系格局现在及今后几十年仍将由西方主导,其语言和文化等 已渗透全球方方面面; 4-伴随着中国经济的发展,国际地位的提升,程也会像孔子学院一样全球开花结果,但道路是曲折 漫长的,需要我们共同努力。 如果你怀疑程真假,那么就冷静下来理性分析一下,怀疑可以但不要听信谗言。如果你决定学习 程,那么就不要再怀疑它,否则是学不好的。 程中辑器、译器、库结构三个软件是在windows平台上运行的软件,所以会被人们误认为是 化的,因为现在大多数人都用windows系统,所以要想推广肯定要在windows平台上,要兼容windows,而 且有一点,大家不要一看到里英文就说是假的,想想中华文化里有多少外来文化,要包容,然后消 化,再吸收,这才是正道,阿拉伯数字、语拼音字母这些就不是外来的,对我们有利的我们当然要加以利 用,也一样,能用则用,为何不用,这也是中华文化包容性在中的又一体现。 现在只开放这种基于windows上的工具软件,还有其它深层或底层的由于商业原因现在还没对外开 放,如果这些都学不会就更没机会接触了,给你也不会用。 知识的原理是相同的,但千万别拿英文和语对照,语言环境变了,思维也要改变,当初学英语时老师 会强调我们要用英语思维,现在学请光荣地找回你们的语思维,回归正统,尤其是英高手。 针对一些英高手说英很好很强大,为什么还要学,我们来举个例子:中国为什么要国防建设国 产化,难道买俄罗斯的武器不好吗?印度也是大国,为什么向俄罗斯买军火时,动不动就被宰,因为他自己 造不出来,这是经济方面;再看一下马岛战争,为什么阿根廷先期处于优势而结果却输了,因为法国不卖导 弹给他了,这是战争方面。现在英高手可以不用学,因为在高手起来之前还没有人能撼动其地位, 当高手起来之后他们自己也该回家养老了,历史的更替使其自动退下舞台,将来产业化后,所谓的 程精英也将消失,程也就是一个普通的工种,这是一种必然的趋势。 语热已经在全球刮起了旋风,相信也会在计算机世界里受到追捧。 现在还是个过渡阶段,希望将来龙芯出中文CPU,然后与联姻,就是语和英语在计算机世界中二 分天下的时候了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值