obfuscated คอมไพเลอร์ C จิ๋ว (OTCC) เป็นคอมไพเลอร์ C มีขนาดเล็กมากที่ผมเขียนเพื่อที่จะชนะนานาชาติ obfuscated C ประกวดรหัส (IOCCC) ในปี 2002
เป้าหมายของฉันคือการเขียนคอมไพเลอร์ C ที่เล็กที่สุดที่สามารถรวบรวมตัวเอง ฉันเลือกชุดย่อยของ C ซึ่งเป็นทั่วไปพอที่จะเขียนคอมไพเลอร์ C ขนาดเล็ก แล้วฉันจะขยายเซต C จนกว่าฉันถึงขนาดสูงสุดได้รับอนุญาตจากการประกวด: 2,048 ไบต์ของมา C ไม่รวม ';', '{', '}' และตัวอักษรพื้นที่
ฉันเลือกที่จะสร้างรหัส i386 รหัสเดิม OTCC เท่านั้นที่สามารถทำงานบน Linux i386 เพราะมันอาศัย endianness และการเข้าถึง unaligned มันสร้างโปรแกรมในหน่วยความจำและเปิดตัวได้โดยตรง สัญลักษณ์ภายนอกได้รับการแก้ไขด้วย dlsym ()
เพื่อให้มีการพกพารุ่น OTCC ผมทำตัวแปรที่เรียกว่า OTCCELF มันเป็นเพียงเล็ก ๆ น้อย ๆ มีขนาดใหญ่กว่า OTCC แต่มันสร้างโดยตรงเชื่อมโยงแบบไดนามิก i386 ปฏิบัติการเอลฟ์จากแหล่ง C โดยไม่ต้องอาศัย binutils เครื่องมือใด ๆ ! OTCCELF ได้รับการทดสอบประสบความสำเร็จบน Linux i386 และ Sparc Solaris
หมายเหตุ: โครงการอื่น ๆ ของฉัน TinyCC ซึ่งเป็นโดดเด่นอย่างเต็มที่ ISOC99 คอมไพเลอร์ C ที่เขียนขึ้นโดยเริ่มต้นจากซอร์สโค้ดของ OTCC!
รวบรวม:
gcc -o -O2 otcc.c otcc -ldl
gcc -o -O2 otccelf.c otccelf
รวบรวมตนเอง:
./otccelf otccelf.c otccelf1
รายละเอียดซอฟแวร์:
ความคิดเห็นที่ไม่พบ