Greg Schechter: Windows Presentation Foundation(WPF) Architecture
Sven Groot wrote:Interesting video. One thing though, Charles: in the beginning your wording kind of implies that this frontend/backend setup is something unique to C++, while in fact every compiler works this way. Heck, I wrote a compiler for a subset of pascal in third year Computer Science, and even that had a separate frontend and backend.I'm sure you didn't mean it like that though, it just sounded that way.
Again, great video. More! You should interview some assembly language people...I would like to hear about the differences and changes over the years in the Pentium architecture and how your teams have adapted to that on very low levels. You kind of hit on that a bit with the multicore discussion here. I've thought a lot about getting back into some assembly programming just for fun (I did a fair amount of it back in the days of the 6502 chips), but am wondering how easy that will be considering the optimization that occurs on the chip itself, the caches, etc.
Question: how do you target your compiler for different Pentium architectures? From what I remember, Intel seems to alter a few instructions with every generation (from the Pentium to the Pentium II, on up to the current ones). Does your compiler recognize the user's chip and pick the best optimization? How about for programs that are shipped? How do those recognize the user's chip? Or do you not take advantage of the latest additions made by Intel?
Unfortunately, I do not own a copy of Visual Studio, so maybe those are options in the IDE, I don't know.
louisl wrote:
As far as runtime detection of the architecture we run on, the CRT does look at it and take advantages of the SSE/SSE2 instruction when available to speed up some computations, and to move larger chunks of memory at a time. The generated code from the compiler doesn't do this however. Doing so would cause a lot of code duplication and our experience has showed that code size is very important for medium to large apps.
-- Louis Lafreniere
louisl wrote:
As far as runtime detection of the architecture we run on, the CRT does look at it and take advantages of the SSE/SSE2 instruction when available to speed up some computations, and to move larger chunks of memory at a time. The generated code from the compiler doesn't do this however. Doing so would cause a lot of code duplication and our experience has showed that code size is very important for medium to large apps.
-- Louis Lafreniere