icd
asked on
Best Assembler to go with MSVC++ 4.1
Not quite the right place to ask this question but...
If I want to make a program with both C and Assembler for a 32 bit application what is the best assembler to use?
It must support the latest op-codes for Pentiums.
If I want to make a program with both C and Assembler for a 32 bit application what is the best assembler to use?
It must support the latest op-codes for Pentiums.
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Not quite what I had in mind. I did know about the _asm instruction in C but rejected it for my purpose. The main reason being it could not support the db instruction.
Having said that I have just been told about the _emit instruction which I am just about to look up.
Really, I wanted a macro assembler since I have quite a bit of assembler to write.
I will get back to you.
Having said that I have just been told about the _emit instruction which I am just about to look up.
Really, I wanted a macro assembler since I have quite a bit of assembler to write.
I will get back to you.
>>Oh dear, I see it was 100 points
I see you're hungry :)
Also I can suggest the MASM v6.11
I see you're hungry :)
Also I can suggest the MASM v6.11
For some tasks the external assembler is preferable (or even is a single solution) than the built-in assembler.
If you need to intertwine C/C++ assets/variables and assembler then this is the way to go. But I would look again at the code quality produced by the compiler; in my experience the effort of handcoding all but the tightest loops has not been repaid.
>> I would look again at the code quality produced by the compiler
I wouldn't. The code produced by the compiler is increadibly bad. Terribly slow, inneficient, and large. But despite that, warmcat is right. Even in the critical sections of your program you aren't likely to see much improvement from assembly.
Take it from me, I've written and I am maintaining a 500,000 line assembly program. And I'm rewriting the whole thing in C++.
I wouldn't. The code produced by the compiler is increadibly bad. Terribly slow, inneficient, and large. But despite that, warmcat is right. Even in the critical sections of your program you aren't likely to see much improvement from assembly.
Take it from me, I've written and I am maintaining a 500,000 line assembly program. And I'm rewriting the whole thing in C++.
ASKER
I recognise that C is more maintainable/efficient/etc that hand coded assembler. I am however writing a security product and need to get down to assembler to make it more difficult to reverse engineer. (an impossible task I know!).
OK. Is MASM V6.11 still available from Microsoft?
OK. Is MASM V6.11 still available from Microsoft?
MASM 6.11 comes with the DDK package.
The DDK package comes with MSDN (http://msdn.microsoft.com/developer/) and is worth the money
You can but MASM 6.11 seperately too. I assume that is cheaper.
Note however that (despite thier claims) Microsoft no longer supports masm. The technical support is through the C++ people. My last 2 calls resulted in long discussions where I had to teach them enough to understand the question. No one was able to resolve the problems. There has not been an upgrade in about 5 years. I'm an alpha tester and have not been contacted about future testing. The masm team members I know of all seem to be working elsewhere.
Note however that (despite thier claims) Microsoft no longer supports masm. The technical support is through the C++ people. My last 2 calls resulted in long discussions where I had to teach them enough to understand the question. No one was able to resolve the problems. There has not been an upgrade in about 5 years. I'm an alpha tester and have not been contacted about future testing. The masm team members I know of all seem to be working elsewhere.
ASKER
Thanks everyone, all gave good answers, sorry I can't share the points.
void functionMyFunction()
{
int nMyCVariable;
_asm {
mov al, 55h ;// use this sequence as comment to get
mov ebx, [nMyCVariable] ;// comment & syntax highlighting
inc ebx
mov [nMyCVariable], ebx
label:
nop
jnz label
}
}
I should also write a little piece of C representative of the inner loop you intend to code in assembler, compile it with all the optimizations switched on and an assembler listing enabled (Project|Settings|C/C++|Ca
Regards,
-Andy