Conversation started May 25, 2011 at 18:39.
May 25, 2011 18:39
@slott Re: visual assembler on .NET. Let's step back for a second. :) Here's what I think @glennnelson is saying.
@slott If Visual Assembler were to mimic Visual Basic/C#/C++, it'd likely have to run on top of the .NET framework. Since it would no longer be running natively, it'd be slower than your normal, garden variety assembler. So there's no compelling reason to put the effort into making it based on performance implications alone.
@slott You make a good point about potentially compiling into native code without .NET... I'm not sure if Visual C++ can do that. VB/VC# certainly don't. If it were possible, I suspect that'd change @glennnelson's answer, since he didn't mention that possibility at all, but I obviously can't speak for him.
@slott Does that help or am I confusing the whole thing even further?
May 25, 2011 19:02
@AnnaLear That is pretty much the premise of my answer. I was getting at the fact that a large part of Visual * is the .NET framework. Assembly would just be slowed down leaving the IDE part of Visual * which is in effect pointless as their are others already in existence.
@GlennNelson Thanks for confirming that I'm reading you right.
May 25, 2011 19:22
@GlennNelson: "Assembly would just be slowed down" By what? This claim makes little sense. What specific thing in .Net slows assembly down. The consensus seems to be that assembly would be faster.
@S.Lott .NET generates the opcodes for the application. A compiled assembly program is already there. With .NET you'd just be adding another step to the process
@GlennNelson "adding another step to the process"? At compile time? Or at run-time? Or both? What is this "slow down"?
May 25, 2011 19:47
@S.Lott Just curious, what has got you so hung up on this? I know I'm not exactly concise and clear in everything I say but I have no doubt I've explained the issue to the point that just about anyone could understand it.
@GlennNelson It's a simple question. I don't understand .NET very well. I'm trying to learn something here. Please help me. What does "adding another step in the process" mean? I don't understand which process you're talking about.
@S.Lott I just find it odd that someone who in their own bio says they have been programmer for over 30 years is asking a 17 with absolutely no formal training a question like this.
:1039753 So, what's the "adding another step?" I don't get what step is getting added. Can you please clarify this for me?
@SLott: I think the step is compiling byte code into native machine language on the host machine that execute the assembly
@GlennNelson The point is this. I don't what what "Adding another step" means in your answer. I don't know what you meant. I'm trying to understand what you meant. can you add any details or an example or anything that would help me see what this step is and what's getting slowed down?
May 25, 2011 19:54
@SLott: Can I have the context of this? There is a question or something?
@Pierre303 I think I may have included you accidentally. The question is on Programmers. stackexchange. programmers.stackexchange.com/questions/79020/…
And yes, the extra step is compiling the byte code into the native machine language.
@GlennNelson So what did "@S.Lott I was referring to the execution speed of the application." mean?
@S.Lott Well it obviously takes time to generate the machine language out of the byte code. That adds time to the startup/runtime/etc of the application.
May 25, 2011 20:00
@GlennNelson "obviously"? Please avoid words like that. If it was obvious, I wouldn't be confused. Why can't this silly "Visual Studio for Assembler" actually write low-level assembler?
Well it could but the point I was trying to make is that if its not involved with .NET it is just another IDE.
Why do we need another IDE?
Unless there is something that you just cannot find with another IDE thats fine and dandy but then why not add this feature to an existing IDE?
@GlennNelson: I'm confused too. What's the problem?
@GlennNelson That part of your answer made sense. The execution speed part doesn't make sense. Still. You've mentioned the JIT overhead. But you still haven't explained the connection with the "there isn't a point running assembly using the .NET runtime because the .NET runtime has a slower execution speed than true low-level assembly, and so would assembly run on the .NET runtime". That part of the answer makes little sense. And doesn't seem related the "Just another IDE" point.
It will be slower because it needs that extra step (initial compilation on host)
In that instance I am referring to compiling assembly into .NET byte code instead of the machine code.
May 25, 2011 20:05
So Assembly code in byte code that must compiled in machine code will run slower than assembly code immediately compiled in machine code.
Exactly
You could replace "Assembly" by any language that produce machine code directly
@GlennNelson So. Assembly into machine code really is faster than .Net? And a Visual Studio for assembly could produce this machine code directly? But doing that in Visual Studio would be bad for some reason.
If you know that your target platform is Windows and 32bits you could compile your C# straight to machine code.
No, there just isn't an actual reason for their to be a "Visual Assembly" simply because it wouldn't be adding anything new.
May 25, 2011 20:10
Since you don't get the most interesting advantages of byte code
@Pierre303 But the question is about Visual Assembler. Not C#.
So is the issue resolved or are there still questions
@SLott: I think you can't target a specific platform in Assembly without using explictely the instructions of the CPU you target. So it's a non sense to have your code in byte code
@Pierre303 I wasn't suggesting using byte code at all. The question was about Visual Assembler, writing CPU instructions directly.
@SLott: yes you could have Assembly in Visual Studio that use an assembly compiler and without having .NET involved at all in the process
May 25, 2011 20:13
@GlennNelson "wouldn't be adding anything new"? The new thing would be CPU-specific assembler code, produced directly, that would be faster than .Net. That seems new-ish to me.
@Pierre303 if you can have CPU-level assembler instructions in existing Visual Studio then the answer to the question on Programmers should have been "It already exists". Right?
I give up... you're taking this in a whole different direction. I'm sorry if I sound rude but this is just getting out of hand.
Visual Studio .NET has everything you need to program in Assembly. Event dissassembly is there with debugger. Sometimes, you get it when an application crash
@GlennNelson: we were close to a resolution
@Pierre303 Oh. Then the question on Programmers was fairly silly. "Is it worth making Visual Assembly?" should be answered with "Visual Studio .NET has everything you need to program in Assembly". Oh.
@SLott: yes the question was naive.
@SLott: no the problem is that the OP didn't understand the purpose of JIT
@Pierre303 Then I'm glad I hadn't voted for the answers that seemed good when they're all a tiny bit misleading.
May 25, 2011 20:19
This is explained on the link above
@GlennNelson: you really left?
@Pierre303 Perhaps you should consider answering the question then.
I will
@Pierre303 The link is worth many upvotes. I only have one, however.
@SLott: I found another interesting StackOverflow answer about that
4
Q: Using Visual Studio 2008 to Assemble, Link, Debug, and Execute MASM 6.11 Assembly Code

KreychekI would like to use Visual Studio 2008 to the greatest extent possible while effectively compiling/linking/building/etc code as if all these build processes were being done by the tools provided with MASM 6.11. The exact version of MASM does not matter, so long as it's within the 6.x range, as th...

I added it to my answer
 
Conversation ended May 25, 2011 at 20:26.