澳门新葡亰官方网站:C语言混乱代码大赛:4KB代码模拟的IBM PC

第22届国际C语言混乱代码大赛公布了获胜者的程序源代码。IOCCC要求参赛者写出最有创意的最让人难以理解的C语言代码,并限制在4
Kb以内
,但今年的许多入选作品却利用了大小检查程序中的bug。获胜者多数是IOCCC大赛的常客,其中来自日本的有4位,美国8位,中国1位。获奖作品中最令人感兴趣的是Adrian
Cable的Largest small system emulator,用了4043个字节模拟出了80年代的IBM
PC,包括Intel 8086/186 CPU、1MB
RAM、3.5英寸软盘控制器……代码字节数比它模拟出的8086/186
CPU的晶体管数量还要少,源码如下:

#include "SDL.h"#define $ for(O=9#define CX M+=(T%3+2*!(!T*t-6))#define x ,A=4*!T,O=t,W=h=T3?u(Q?p:D(A+3),D(A),D(A+1)[i]+D(A+2)*g+):K(t),U=V=K(a),o?U=h,W=V:V,#define C 8*-~L#define Z short#define y a(Z)Y[++O]#define B ),a--||(#define _ ),e--||(#define V(I,D,E)(O=a(I)h[r])!(A=(D)(V=(1[E+L]16)+*i)/O,A-(I)A)?1[E+L]=V-O*(*E=A):H(0)#define i(B,M)B(o){return M;}#define R(O,M,_)(S=L?a(I Z)O:O,N=L?a(I Z)O M(f=a(I Z)_):(O M(f=a(I n)_)))#define T(_)R(r[u(10,L=4,--)],=,_)#define u(a,r,T)16*i[a]+(I Z)(T i[r])#define a(_)*(_*)#define L(_)M(W,_,U)#define M(S,F,T)R(r[S],F,r[T])#define A(_)(i[L=4]+=2,R(_,=,r[u(10,4,-2+)]))#define c(R,T)(1[u=19,L+T]=(N=a(R)h[r]*(R)*T)16,*i=N,G(F(N-(R)N)))#define h(_)(1(L?a(Z)_:_)C-1)#define I unsigned#define n char#define e(_)v(F(40[L(_##=40[E]+),E]N==S|_ N_(int)S))I n t,e,l[80186],*E,m,u,L,a,T,o,r[121],X,*Y,b,Q=0,R=0;I Z*i,M,p,q=3;I*localtime(),f,S,kb=0,h,W,U,c,g,d,V,A;N,O,P=983040,j[5];SDL_Surface*k=0;i(K,P+(L?2*o:2*o+o/47))i(D,r[a(I)E[259+4*o]+O])i(w,i[o]+=~(-2*47[E])*~L)i(v,(z((f^=S^N)16),G(N-S1(40[E]^fC-1))))J(){V=61442;$;O--;)V+=40[E+O]D(25);}i(H,(46[u=76,J(),T(V),T(9[i]),T(M),M(P+18,=,4*o+2),R(M,=,r[4*o]),E]=0))s(o){$;O--;)40[E+O]=11D(25)o;}i(BP,(*i+=262*o*z(F((*E15)9|42[E])),*E=15))i(SP,(w(7),R--1[i]o?R++,QQ++,M--:0))DX(){$,O*=27840;O--;)O[(I*)k-pixels]=-!!(17-O%8r[O/2880*90+O%720/8+(88+952[l]/128*4+O/720%413)]);SDL_Flip(k);}main(BX,nE)n**nE;{9[i=E=r+P]=P4;$;q;)j[--q]=*++nE?open(*nE,32898):0;read(2[a(I)*i=*j?lseek(*j,0,2)9:0,j],E+(M=256),P);$;Y=r+16*9[i]+M,Y-r;Q|R||kb46[E]KB)--64[T=1[O=32[L=(X=*Y7)1,o=X/21,l]=0,t=(c=y)7,a=c/87,Y]6,g=~-T?y:(n)y,d=BX=y,l],!T*t-6T-2?T-1?d=g:0:(d=y),QQ--,RR--x(O=*Y,O=u=D(51),e=D(8),m=D(14)_ O=*Y/27,M+=(n)c*(L^(D(m)[E]|D(22)[E]|D(23)[E]^D(24)[E]))_ L=*Y8,R(K(X)[r],=,c)_ L=e+=3,o=0,a=X x a=m _ T(X[i])_ A(X[i])_ a2?M(U,+=1-2*a+,P+24),v(f=1),G(S+1-a==1C-1),u=u4?19:57:a-6?CX+2,a-3||T(9[i]),a2T(M),a1M(P+18,=,U+2),R(M,=,U[r]),u=67:T(h[r])_(W=U B u=m,M-=~L,R(W[r],,d)B 0 B L(=~)B L(=-),S=0,u=22,F(NS)B L?c(I Z,i):c(I/**/n,E)B L?c(Z,i):c(n,E)B L?V(I Z,I,i):V(I n,I Z,E)B L?V(Z,int,i):V(n,Z,E))_++e,h=P,d=c,T=3,a=m,M--_++e,13[W=h,i]=(o|=!L)?(n)d:d,U=P+26,M-=~!o,u=17+(m=a)_(a=m B L(+=),F(NS)B L(|=)B e(+)B e(-)B L(=)B L(-=),F(NS)B L(^=)B L(-),F(NS)B L(=))_!L?L=a+=8 x L(=):!o?Q=1,R(r[p=m x V],=,h):A(h[r])_ T=a=0,t=6,g=c x M(U,=,W)_(A=h(h[r]),V=m?++M,(n)g:o?312[E]:1)(a4?V%=a/2+C,R(A,=,h[r]):0,a1?R(h[r],=,V):R(h[r],=,V),a3?u=19:0,a5?0:F(SV-11)B R(h[r],+=,AC-V),G(h(N)^F(N1))B A=(1V)-1,R(h[r],+=,AC-V),G(h(N*2)^F(h(N)))B R(h[r],+=(40[E]V-1)+,A1+C-V),G(h(N)^F(A1C-V))B R(h[r],+=(40[E]C-V)+,A1+C-V),F(A1V-1),G(h(N)^h(N*2))B G(h(N)^F(h(SV-1)))B G(h(S))B 0 B VC||F(A),G(0),R(h[r],+=,A*=~((1C)-1V)))_(V=!!--1[a=X,i]B V=!m[E]B V=m[E]B 0 B V=!++1[i]),M+=V*(n)c _ M+=3-o,L?0:o?9[M=0,i]=BX:T(M),M+=o*L?(n)c:c _ M(U,,W)_ L=e+=8,W=P,U=K(X)_!R||1[i]?M(m2?u(8,7,):P,=,m1?P:u(Q?p:11,6,)),m1||w(6),m2||SP(1):0 _!R||1[i]?M(m?P:u(Q?p:11,6,),-,u(8,7,)),43[u=92,E]=!N,F(NS),m||w(6),SP(!N==b):0 _ o=L,A(M),mA(9[i]),m2?s(A(V)):o||(4[i]+=c)_ R(U[r],=,d)_ 986[l]^=9,R(*E,=,l[m?2[i]:(n)c])_ R(l[m?2[i]:(n)c],=,*E)_ R=2,b=L,QQ++_ W-U?L(^=),M(U,^=,W),L(^=):0 _ T(m[i])_ A(m[i])_ Q=2,p=m,RR++_ L=0,O=*E,F(D(m+=3*42[E]+6*40[E])),z(D(1+m)),N=*E=D(m-1)_ N=BP(m-1)_ 1[E]=-h(*E)_ 2[i]=-h(*i)_ 9[T(9[i]),T(M+5),i]=BX,M=c _ J(),T(V)_ s(A(V))_ J(),s((V~m)+1[E])_ J(),1[E]=V _ L=o=1 x L(=),M(P+m,=,h+2)_++M,H(3)_ M+=2,H(cm)_++M,m[E]H(4)_(c=m)?1[E]=*E/c,N=*E%=c:H(0)_*i=N=mE[L=0]+c*1[E]_*E=-m[E]_*E=r[u(Q?p:m,3,*E+)]_ m[E]^=1 _ E[m/2]=m1 _ R(*E,,c)_(a=c B write(1,E,1)B time(j+3),memcpy(r+u(8,3,),localtime(j+3),m)),a2?*E=~lseek(O=4[E][j],a(I)5[i]9,0)?(a?write:read)(O,r+u(8,3,),*i):0:0),O=u,D(16)?v(0):D(17)G(F(0)),CX*D(20)+D(18)-D(19)*~!!L,D(15)?O=m=N,41[43[44[E]=h(N),E]=!N,E]=D(50):0,!++q?kb=1,*l?SDL_PumpEvents(),k=k?k:SDL_SetVideoMode(720,348,32,0),DX():k?SDL_Quit(),k=0:0:0;}i(F,40[E]=!!o)i(z,42[E]=!!o)i(G,48[E]=o)

IOCCC主页IOCCC获奖者名单源代码:#澳门新葡亰官方网站,2013

相关文章