Saturday, December 26, 2015

Free seats for Bruce Dang's training class

Better late than never, I'm excited to announce that we're going to grant a handful of 100% scholarships for college students to attend Bruce Dang's class at TetCon 2016.

Since we'll probably receive more applications than available spots, we have a challenge and whoever wins will get to attend the class for free (with a chance to obtain a signed copy of Bruce's book on practical reverse engineering). Anyone can take the challenge, but in order to win you must be currently enrolling to some official university in Vietnam or oversea. We will check your student ID at entrance.

The class is two-day, Dec 30 and Dec 31. The location is in downtown Saigon. We won't be able to pay for accommodation or transportation.

Without further ado, here's the challenge: write memset() using x86 assembly. Whoever provides the shortest code in terms of code size, i.e., number of instructions, wins. You can implement for Linux or Windows. You can use whatever instruction set you want; however we are optimizing for code size and not for speed so you should be careful with the instruction set ;). You will need to send us source code of a working program that exercises the function.

Bonus challenge (which will be used to select the winners if too many people come up with the same code size for memset): implement memcpy using x86 or x86-64 assembly, whoever provides the fastest code wins. You will need to provide a wrapper that copies 100MB from one memory location to another using your memcpy. Benchmarking will be done on my laptop, which has a 2.7GHz dual-core Intel Core i5 processor (Turbo Boost disabled) with 3MB shared L3 cache and 8GB of RAM. You can use whatever instruction set supported by this CPU. I'm not running Windows, but I have GCC, Clang, NASM, etc. please tell me how to compile your code in your submission.

Please email your code and a short intro about yourself to You can submit multiple entries, but we'll benchmark only the last one. The deadline is GMT+7 11:59 (one minute before noon) Dec 29. The winners will be announced at 17:00 on the same day.

Please leave a comment if you have any questions.

Have fun!

1 comment:

Unknown said...

Can you post the contents of /proc/cpuinfo from a reasonably recent Linux kernel on your laptop?