quick question about assembler instructions

DSP related issues, mathematics, processing and techniques
Post Reply
KG_is_back
Posts: 1196
Joined: Tue Oct 22, 2013 5:43 pm
Location: Slovakia

quick question about assembler instructions

Post by KG_is_back »

Hi people, I'm currently creating updated version of assembler opcode reference that contains descriptions (with only FS related info) and CPU costs of all instructions supported by FS assembler. It takes forever to gather data and test it if it works in expected way, so I want to ask few questions about some instructions I'm not sure about.
First of all did you ever used these instructions?:

Code: Select all

inc [reg];
rdtsc;
call reg;
ret;

Are they working? How if yes, why not if not?
Exo
Posts: 426
Joined: Wed Aug 04, 2010 8:58 pm
Location: UK
Contact:

Re: quick question about assembler instructions

Post by Exo »

I have never used them, but rdtsc can be read like so....

Code: Select all

streamout read;
rdtsc ; //read time stamp
mov read[0], eax; //probably should be read as an int


AFAIA it can be used to time the speed of opcodes and sections of code but it never used these days because it is unreliable on modern processors. And in Flowstone it is practically useless anyway because it would be called per sample unless you use a jmp.
I found THIS on rdtsc.

inc I have never done anything with, but it looks like it can only take a pointer (address) and then increments the value at the address, just tried it but got a crash.

call and ret no idea how they could be successfully used.
Flowstone Guru. Blog and download site for Flowstone.
Best VST Plugins. Initial Audio.
KG_is_back
Posts: 1196
Joined: Tue Oct 22, 2013 5:43 pm
Location: Slovakia

Re: quick question about assembler instructions

Post by KG_is_back »

I've done some testing and confirm what you just wrote. rdtsc; works but because of code prefetching is pretty much useless. I believe the stock analyzer prim uses it to count cycles, which would also explain why it's so unreliable and inconsistent.
the inc [reg]; also works but it's actually slower (or at least less efficient in the bigger picture) than mov eax,var; add eax,1; mov var,eax; on modern CPUs according to several optimization guides. I have once successfully implemented jnz integer; by reading the machine code and estimating eip difference from that. Call didn't work even that way though. They are probably there just because they are internally used by multiple primitives. For example when you display assembly output of analyzer you can see the stages end with ret; so FS calls the sample calculations by the "call" probably.
Still I listed them stating they are actually of no use at the moment, just for completeness of the reference.

By the way Exo, any news on possible assembler/code component revision form Malc?
Exo
Posts: 426
Joined: Wed Aug 04, 2010 8:58 pm
Location: UK
Contact:

Re: quick question about assembler instructions

Post by Exo »

KG_is_back wrote:They are probably there just because they are internally used by multiple primitives. For example when you display assembly output of analyzer you can see the stages end with ret; so FS calls the sample calculations by the "call" probably.
Still I listed them stating they are actually of no use at the moment, just for completeness of the reference.

Yes I think they are only there because Flowstone is using them but they are of no real use to us, at least with the current feature set.

KG_is_back wrote:By the way Exo, any news on possible assembler/code component revision form Malc?

Sorry not been in touch yet, I will do that this weekend.

Anything else you want me to mention or ask for?

I plan to ask for a few more ASM opcodes, just the ones from the other thread. Let me know if there are others that would be useful.
I will ask him to give some serious consideration to enabling us to write our own functions, it's possible this wouldn't be so hard to add but I don't know, and it depends if he see enough merit in that but I will try to sell it to him ;)
Flowstone Guru. Blog and download site for Flowstone.
Best VST Plugins. Initial Audio.
KG_is_back
Posts: 1196
Joined: Tue Oct 22, 2013 5:43 pm
Location: Slovakia

Re: quick question about assembler instructions

Post by KG_is_back »

Exo wrote:
Anything else you want me to mention or ask for?

I plan to ask for a few more ASM opcodes, just the ones from the other thread. Let me know if there are others that would be useful.
I will ask him to give some serious consideration to enabling us to write our own functions, it's possible this wouldn't be so hard to add but I don't know, and it depends if he see enough merit in that but I will try to sell it to him ;)


Not really... Adding a few more integer instructions (so we can subtract and possibly multiply and divide integers) will do the thing for me (and the andps coloring bug). I don't think he will be compliant about the function calling - it can be rather tricky calling functions at sample rate.
Post Reply