If you have a problem or need to report a bug please email : support@dsprobotics.com
There are 3 sections to this support area:
DOWNLOADS: access to product manuals, support files and drivers
HELP & INFORMATION: tutorials and example files for learning or finding pre-made modules for your projects
USER FORUMS: meet with other users and exchange ideas, you can also get help and assistance here
NEW REGISTRATIONS - please contact us if you wish to register on the forum
Users are reminded of the forum rules they sign up to which prohibits any activity that violates any laws including posting material covered by copyright
quick question about assembler instructions
5 posts
• Page 1 of 1
quick question about assembler instructions
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?:
Are they working? How if yes, why not if not?
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?
- KG_is_back
- Posts: 1196
- Joined: Tue Oct 22, 2013 5:43 pm
- Location: Slovakia
Re: quick question about assembler instructions
I have never used them, but rdtsc can be read like so....
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.
- 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.
- Exo
- Posts: 426
- Joined: Wed Aug 04, 2010 8:58 pm
- Location: UK
Re: quick question about assembler instructions
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?
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?
- KG_is_back
- Posts: 1196
- Joined: Tue Oct 22, 2013 5:43 pm
- Location: Slovakia
Re: quick question about assembler instructions
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
- Exo
- Posts: 426
- Joined: Wed Aug 04, 2010 8:58 pm
- Location: UK
Re: quick question about assembler instructions
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.
- KG_is_back
- Posts: 1196
- Joined: Tue Oct 22, 2013 5:43 pm
- Location: Slovakia
5 posts
• Page 1 of 1
Who is online
Users browsing this forum: No registered users and 15 guests