|
Hi led mike!
The document you referred said, it is used to -- "Specifies where the common language runtime can find an assembly.". We are talking about marshalling in COM, and I do not think they are related?
regards,
George
|
|
|
|
|
George_George wrote: "Specifies where the common language runtime can find an assembly.". We are talking about marshalling in COM, and I do not think they are related?
That is correct, they are not related. However you posted:
George_George wrote: In the world of Windows and COM
and today you must include the .NET Platform in the "world of Windows". I was unsure of your meaning so I took the broadest interpretation.
In COM the equivalent of CodeBase would be the Registry entries that allow us to use meta-data like CLSID to instantiate the component. I have not worked much with DCOM so I have almost zero knowledge of how DCOM proxies/remoting works. If you are interested you should study the subject.
led mike
|
|
|
|
|
Thanks led,
For .Net and Java samples we discussed before, code base means binary executable file, but peer in COM, I think it should be DLL/EXE COM server, not the CLSID text ID. Any comments?
regards,
George
|
|
|
|
|
George_George wrote: code base means binary executable file
I suppose if we change that to say it "references" the binary module rather than "means" that would be accurate.
My comment was about the Java use of CodeBase as a keyword to provide the meta data containing the address of the binary. That is what would be equivalent to the registry entries and the CLSID parameter in the COM library functions to access the binary module.
Have you discovered yet if DCOM provides some similar remote based feature? Or perhaps it requires the prior installation of the component on each local environment?
led mike
|
|
|
|
|
Thanks led mike,
For automation compatible data types, we only need to let the other party know the type, and they could be able to decode/deserialize.
For the Java, I am not sure if we need to decode/deserialize the content for a type, we need to provide not only the type information, but also the binary executable code?
regards,
George
|
|
|
|
|
George_George wrote: For automation compatible data types, we only need to let the other party know the type, and they could be able to decode/deserial
Sorry George, I don't understand that. Do you have a link to the reference you are getting that from?
George_George wrote: For the Java, I am not sure if we need to decode/deserialize the content for a type, we need to provide not only the type information, but also the binary executable code?
Dynamic code downloading using RMI[^]
One of the most significant capabilities of the JavaTM platform is the ability to dynamically download Java software from any Uniform Resource Locator (URL) to a Java virtual machine* (JVM) running in a separate process, usually on a different physical system.
led mike
|
|
|
|
|
Hello everyone,
Any ideas about how to see assembly code for release mode? Since in release mode, we can not set a breakpoint in Visual Studio 2008, so I can not stop at somewhere and see the Diassembly code.
Any ideas?
(My purpose is to compare the release mode and debug mode assembly code to see how Visual Studio make optimizations in release mode.)
thanks in advance,
George
|
|
|
|
|
use Dumpbin utility.
dumpbin /disasm is the command line option.
I hope it helps.
Regards,
Sandip.
|
|
|
|
|
Thanks SandipG,
I have tried and the assembly code can be dumped. But there is no source codes/assembly code matching as shown in debug mode in Visual Studio. It is hard to read.
Any ideas?
regards,
George
|
|
|
|
|
Does DebugBreak() help
Somethings seem HARD to do, until we know how to do them.
_AnShUmAn_
|
|
|
|
|
Thanks AnShUmAn,
I want to see how release mode is optimized for the i/j loop in assembly language. But seems when I set a breakpoint, there is nothing assembly code related to function foo displayed. Could you reproduce it? Any ideas?
#include <windows.h>
void foo()
{
int h = 4;
int w = 7;
int A[4 * 7];
for (int i = 0; i < h; i++)
{
DebugBreak();
for (int j = 0; j < w; j++)
{
A [i*w + j] = -(i * i + j * j);
}
}
}
int main()
{
foo();
return 0;
}
regards,
George
|
|
|
|
|
I believe compiler will throw away the for loops as A is not used after words.
-Saurabh
|
|
|
|
|
Well, Saurabh. Thanks and I agree. How about this version of code? I tried with dumpbin /disasm, but still only assembly code, no source code related.
#include <windows.h>
#include <iostream>
using namespace std;
int A[4 * 7];
void foo()
{
int h = 4;
int w = 7;
for (int i = 0; i < h; i++)
{
DebugBreak();
for (int j = 0; j < w; j++)
{
A [i*w + j] = -(i * i + j * j);
}
}
}
int main()
{
foo();
cout << A [0] << endl;
return 0;
}
regards,
George
|
|
|
|
|
Go to Project -> Properties -> Configuration Properties -> C/C++ -> Output Files -> Assember Output. Now select the Assembly with source code.
Hint: You can also ask compiler to generate Preprocessed files. Sometimes its usefull to see how macros are expanded.
-Saurabh
|
|
|
|
|
Thanks Saurabh!
I have set the option, but how to see the release mode assembly code together with the source? I have tried with dumpbin /disasm, but seems only assembly code is displayed.
regards,
George
|
|
|
|
|
Did you opened the asm file generated? The file should be in the Release folder. The source in added as comments in the asm file itself. So for every line of source it will clearly show the assembly generated.
-Saurabh
|
|
|
|
|
Thanks Saurabh,
What do you mean "open"? Execute it or?
regards,
George
|
|
|
|
|
asm is a text file!!! Just open it in your favourite text editor. Visual Studio will do just fine.
-Saurabh
|
|
|
|
|
Thanks Saurabh,
1.
I find there is a new file named main.asm generated, do you mean that file?
2.
My purpose is to find the related assembly code is optimized in release mode, does turn on the option of Assembler Output impact the actual optimization in release mode?
regards,
George
|
|
|
|
|
George_George wrote: find there is a new file named main.asm generated, do you mean that file
Yes I mean that file.
George_George wrote: My purpose is to find the related assembly code is optimized in release mode, does turn on the option of Assembler Output impact the actual optimization in release mode?
Why don't you compare assembly generated by debug vs release and check that for yourself.
-Saurabh
|
|
|
|
|
Thanks Saurabh,
I have checked some functions there is no impact to release build of assembly code when we enable the "Assembly With Source Code" option. Is that correct?
regards,
George
|
|
|
|
|
George_George wrote: Is that correct?
Yes, because the C source code in the .asm file is a comment.
"Love people and use things, not love things and use people." - Unknown
"To have a respect for ourselves guides our morals; to have deference for others governs our manners." - Laurence Sterne
|
|
|
|
|
Thanks DavidCrow,
Question answered.
regards,
George
|
|
|
|
|
George_George wrote:
I find there is a new file named main.asm generated, do you mean that file?
Can you not open it and answer that question for yourself?
"Love people and use things, not love things and use people." - Unknown
"To have a respect for ourselves guides our morals; to have deference for others governs our manners." - Laurence Sterne
|
|
|
|
|