What is Testbug?
Testbug is a program which is shipped with GoBug. It can be used to practice debugging and to test GoBug. It also contains some sample code and demonstrates the use of assembler and Win32 programming. Here is a brief description of what Testbug does.
The files used by Testbug
The main executable is Testbug.Exe and the Dlls are Testbug1.dll, Testbug2.dll and Testbug3.dll. There is also a comprehensive help file, Testbug.chm. All the executables have their symbols embedded in Coff format. Testbug1.dll and Testbug2.dll are loaded when the program starts. Testbug3.dll is loaded at run-time when trying the run-time link and start-up code tests.
Testbug speed tests
These tests compare the speed of various APIs and also compare the speed of some APIs with their assembler counterparts. Topics covered are speed of addressing the stack, optimising LOOP and REP, which is quicker FPU or CPU, and how fast is data within the code section, using branch hints with the Intel Pentium P4 and above, the quickest way to write various numbers to the screen and comparing the speed of the memory APIs. See Testbug help files for more information.
Testbug "use of Win32" tests
These tests demonstrate the use of Win32 in an assembler context. Topics covered are addressing the stack in various ways, creation and use of Dlls, temporary on-screen notices, window clipping by manipulating the device context, window clipping by using the window APIs, using the various memory APIs, making resources in different language versions, using the Microsoft Layer for Unicode, simulating a dialog using an ordinary window and using different types of WndProc. See Testbug help files for more information.
Testbug "use of GoBug" tests
These tests demonstrate GoBug in real time. See practice debugging and using GoBug for these tests.
Testbug "use of mnemonics" tests
These tests demonstrate the use of various mnemonics. Topics covered include the use of NEG and NOT, size of code produced by various mnemonics, use of the bit control mnemonics, use of flags, use of REP SCAS, IDIV, and IMUL, BCD coding, different types of JMPs and CALLs, use of Floating Point instructions, MMX, 3DNow!, XMM, SSE, and SSE2 instructions, SIMD floating point control and a real-time hex calculator. See Testbug help files for more information.