Author Topic: Monitoring of xmm-Registers possible?  (Read 3341 times)

Offline engineer

  • Single posting newcomer
  • *
  • Posts: 4
Monitoring of xmm-Registers possible?
« on: November 19, 2008, 02:09:18 am »
Hi @ all,  :D

I'm currently "pimping up" some code for FDTD(numerical DGL computations). That means I try to speed the code up as much as possible.
Among other things I use Inline-Assembler with instrustions from the SSE2 Instruction Set (SIMD) for this. This instructions use special 128bit registers (xmm registers) to perform parallel computations. But in Debug-Mode I can not monitor this registers...

Is there any way to watch the content of this registers in the "CPU Registers"-window?

kind regards
/David

P.S.: I'm using Win XP with C::B version 8.02 and the MinGW Compiler.

Offline thomas

  • Administrator
  • Lives here!
  • *****
  • Posts: 3979
Re: Monitoring of xmm-Registers possible?
« Reply #1 on: November 19, 2008, 03:46:53 pm »
The only thing you can do to date is to send a user command (specifically, info vector) to the debugger manually.

Implementing this is troublesome since neither the presence, nor the number, nor the size, nor the semantics of vector registers are clearly defined on different CPUs under different operating systems, in different programs.
For example, a processor may have none, 8, or 16 SSE registers, and the OS may make none, 8, or 16 of them available. The application might use half of these registers to store unsigned bytes, and the other half to store floats (or anything else).
Putting all that into a non-redundant interface that works and is understandable was deemed too much hassle at the time of writing the debugger plugin.
"We should forget about small efficiencies, say about 97% of the time: Premature quotation is the root of public humiliation."

Offline engineer

  • Single posting newcomer
  • *
  • Posts: 4
Re: Monitoring of xmm-Registers possible?
« Reply #2 on: November 20, 2008, 11:19:10 pm »
Hi Thomas,

thank you very much for your fast response!
Honestly I have to say, that until now I had no idea of how the cpu-register-contents get into the window of the debugger plugin. :wink: And since the SSE/SSE2 Instruction set is supported by nearly all relevant CPUs since Pentium 4, I thought an implementation of this feature would be of no special difficulty. But of course your explanation makes sense. Thank you again for your fast and explicit answere.

I will use the chance to compliment you on the C::B IDE! I really love to use it.  :)

kind regards
/David

Offline thomas

  • Administrator
  • Lives here!
  • *****
  • Posts: 3979
Re: Monitoring of xmm-Registers possible?
« Reply #3 on: November 21, 2008, 12:40:38 am »
If you find a solution to make the interface understandable and implementable without going through hell, then maybe we can implement it (or better even, maybe you can write a patch). There is really no "good" reason why it's not implemented, except for the pain of figuring out what's available and what are its semantics. The debugger doesn't know either, which is why it outputs such an awful lot of data when you do an info vector -- it simply outputs every possible binding.
"We should forget about small efficiencies, say about 97% of the time: Premature quotation is the root of public humiliation."

Offline engineer

  • Single posting newcomer
  • *
  • Posts: 4
Re: Monitoring of xmm-Registers possible?
« Reply #4 on: November 21, 2008, 01:48:19 am »
I won't have the time for this in the next months, because I'm currently working on my Diplom-Thesis. (Thats what the whole FDTD-Stuff is for) So I guess I will have to do it without having this feature implemented in C::B, what will be absolutely possible.

The feature that I miss more, is that the disassembly window is "blank" text; most of all: does not indicate the current instruction pointer. I've seen pictures of Linux- or Mac-C::B where there's even syntax highliting and everything. So is there any way to have this for windows too? Some option I just did'nt see until now?
This is how my disassembly window looks like:

(An other Topic where I asked this question remained unanswered.)

kind regards
/David
« Last Edit: November 21, 2008, 01:50:42 am by engineer »