#156751 - simonjhall - Tue May 13, 2008 6:45 pm
We're looking to complete the development of a load of code at work at the moment and this involves the people who wrote the code doing a walkthrough of their stuff.
We've already done the walkthrough of the stuff that my boss wrote (in C++) and he did this by printing off all the code, and loads of UML and class definitions (their headers and doxy comments). This went pretty well.
I wrote the algorithms which interface with his code (as he wrote the outer logic) and my code is mainly non-branchy-ish code in tight loops. I don't think that printing off the class diagrams is appropriate (as there are no classes) and starting with the code first will be difficult. These algorithms come in three categories:
1) infrequently called stuff, written in C
2) fast code, written in high-level intrinsics, unrolled a bit and scheduled by the compiler
3) uber-13:37 ultra-pipelined and hand optimised assembly code (the bit I'm most worried about)
The people I'm doing it to have little experience with assembly so I don't want to dive in, plus all the code is out of order so stepping through the uber-1337 stuff line by line is gonna be a nightmare... However the people I'm doing this to want to go through it in order to maintain the code in case I quit. Another point of the walkthrough is that they're there to spot mistakes, so if they're not familar with the ISA I'm literally going to have to get out the manual for every instruction.
So...has anyone done this sort of thing before and would you be willing to offer advice about what worked and what didn't? I'd really appreciate any help!
PS: I went through the high-level algorithm to 3) today and all the stuff I did to make the code run the way it did...but without looking at any assembly, instead using a bit flow chart/graph thing where each node is an instruction with the description in pseudocode.
_________________
Big thanks to everyone who donated for Quake2
We've already done the walkthrough of the stuff that my boss wrote (in C++) and he did this by printing off all the code, and loads of UML and class definitions (their headers and doxy comments). This went pretty well.
I wrote the algorithms which interface with his code (as he wrote the outer logic) and my code is mainly non-branchy-ish code in tight loops. I don't think that printing off the class diagrams is appropriate (as there are no classes) and starting with the code first will be difficult. These algorithms come in three categories:
1) infrequently called stuff, written in C
2) fast code, written in high-level intrinsics, unrolled a bit and scheduled by the compiler
3) uber-13:37 ultra-pipelined and hand optimised assembly code (the bit I'm most worried about)
The people I'm doing it to have little experience with assembly so I don't want to dive in, plus all the code is out of order so stepping through the uber-1337 stuff line by line is gonna be a nightmare... However the people I'm doing this to want to go through it in order to maintain the code in case I quit. Another point of the walkthrough is that they're there to spot mistakes, so if they're not familar with the ISA I'm literally going to have to get out the manual for every instruction.
So...has anyone done this sort of thing before and would you be willing to offer advice about what worked and what didn't? I'd really appreciate any help!
PS: I went through the high-level algorithm to 3) today and all the stuff I did to make the code run the way it did...but without looking at any assembly, instead using a bit flow chart/graph thing where each node is an instruction with the description in pseudocode.
_________________
Big thanks to everyone who donated for Quake2