What is the full form of LDC in opcode - jvm

What is the full form of 'LDC' in opcode?
I find the doc, but there is no answer:
https://docs.oracle.com/javase/specs/jvms/se7/html/jvms-6.html#jvms-6.5.ldc
I learn it from jvm, I know it also in x86-opcode. So what is it history?
please, thanks ^_^

As the linked documentation says, it loads a constant from the constant pool (through the index) and then pushes that on the stack.

Related

What is this mach_constant_base_node

In c2 architecture specific file i see the above variable. Please share
1. what it is?
2. Whether does it has any relation to the run time constant pool.
Thank you.
An IR graph node that represents a base address of the compiled method's constants table in a machine-specific manner. This node actually does nothing on x86, since the architecture allows to reference the whole range of 32-bit or 64-bit addresses inline.
Generally, no. Though some constants from the constant pool (particularly, floating point) may appear in that table.
P.S. I guess HotSpot Compiler guys are too busy to browse StackOverflow :) The better place for asking C2 implementation-specific questions is hotspot-compiler-dev list.

A Sequence at a forum register area

I want to register to a forum but stuck at a question to register.
Type the secuence
GDB123_YTU
I tried 1,2,3,4,5,6,7,8,9,10,21,321
What could it be?
Is this just a really badly implemented Captcha?
I read this as they want you to type "GDB123_YTU" in.?
Maybe you have to add 4? So "GDB1234YTU". Is this really a valid question for SO?

How to find or create the iteration number box in a For loop

I have a large, somewhat messy For loop in which I can not find the iteration number box. Is there any way of searching for this component or simply creating a second iteration number box?
You can't create a second iterator terminal, but you can use scripting to move the iterator to a typical location (bottom left) with this VI Snippet.
Be sure the file is open before running the script.
This is a bit of a gamble, but you can try the Clean Up Diagram tool and see if that helps. If it doesn't it should still expose the iteration icon, and you can find out what wires it is connected to. Hit Ctrl-Z to undo the clean-up, and double click on the wire indicated previously and it should expose everywhere the wire routes to. Hopefully you can track it down then.
A messy diagram means that sub-vis or an architecture re-design is badly needed.
Depending on what version of labview you are using, you can use Block Diagram Cleanup tool, as mentioned by Austin. But you can also highlight a section of code and clean that up individually. This 'selective cleanup' feature was introduced in 2012.
Regardless, you can't search for an iteration counter. Use your eyeballs...how bad could this for loop be? Hint hint: I want to see it :-)

In unpacking do you find the ECX value or the ESP value for Aspack 2.12?

I am teaching myself how to do malware analysis. While attempting to analyze a malicious file found on a USB drive it came to my attention that this malware was packed with Aspacker 2.12 (PEiD). I've never come across Aspack before, and a quick google search led me to this video: http://www.youtube.com/watch?v=I3QeEqC4-jE
This guys says to find the ECX register to find the Original Entry Point.
another google search led me to another tutorial on a site calls tuts4you (I can't post the link because you need to download the file to view the tutorial) but THIS guy says to find the ESP register and the EDI register and do exactly the same thing.
They both use ollydbg and import REC, and it appears that the tutorials are showing the exact same thing - namely finding the OEP for unpacking ASpack.
Since I am new to this, would someone mind explaining which one is correct and why?
Hope the question is not too obsolete...
There are more ways to achieve this task. You can follow steps in the mentioned tutorial or try other ways (usually dependent on packers version/options, etc). To mention one alternative approach, try to find following instructions in you packed executable:
6800000000 push 0
C3 retn
Set the breakpoint to this push 0 instruction and run executable. This instruction will be modified during packers code exection and 0 (DWORD 0x000000) will be replaced with address (DWORD) of the original entry point (so the instruction will look like push 00451000 for example).
Once executed, address of OEP will be pushed to the stack and following ret instruction will take it as return address where the execution should continue....thus setting EIP (instruction pointer) to original entrypoint.
For search for these instructions, I recommend some hex editor or HIEW32...search for following hex pattern:
6800000000C3

CIL stack exchange instruction

Is there a CIL instruction to exchange the first two elements in the stack?
There is no single instruction exchange. However, using stloc, pop, and ldloc, you should be able to accomplish your exchange.
No. The only way to swap elements is to pop the top two elements to locals, then push them in reverse order.
Looking at a list of CIL instructions there doesn't appear to be a single instruction that exchanges the two elements at the top of the stack. You'll have to do it the old pop/push way.
For future reference, you can create an assembly that does what you want to learn the IL for, then view the assembly in Reflector. You can select the language you wish the code to be in, and IL is one of the options. I did this when trying to figure out how to code a dynamic method...