![]() |
|
|
|
#1
|
|||
|
|||
|
Calling conventions are, well...hopelessly complicated
![]() In a nutshell, when you call a procedure, it's rarely as simple as just executing a CALL statement, executing the procedure code, and then executing a RETN statement. The calling code and the procedure both have to agree on how to do several things:
For high-level languages, the calling convention also defines how the function name in the source code will get translated for the export section. This is particularly important for languages like C++ that support function overloading. That is, you have two or more functions declarations in your source code that are represented by the same symbol, but different arguments. Internally, the compiler actually gives each version of the function a unique name according to the name you gave it and the argument list in the function declaration. Then it looks at all the calls in your source code and changes them to the appropriate mangled name. Since the mangled names are what actually go in the export table, the mangling protocol is included in the calling convention. Probably the most commonly used conventions are:
By the way, I'm just reciting this from my notoriously shakey memory, so it's probable that I've made a mistake somewhere. If I were you, I wouldn't count on it being entirely accurate
|
|
#2
|
|||
|
|||
|
http://wasm.ru/ has english mirror site?
|
|
#3
|
|||
|
|||
|
Quote:
|
|
#4
|
|||
|
|||
|
I've tried learning even the most basic ASM, I don't have the attention span for it. I can understand it a little bit, but never write anything massive or complex. I can barely write an ASM program to output text. o_O
|
|
#5
|
|||
|
|||
|
Katrin:
It's been quite a while since I reviewed the +ORC tuts, but they would certainly be helpful in acquiring a basic understanding of how assembly works. Less likely that they would help with actual assembly programming however. If actual programming in assembly is of interest, there are several good resources on the net. including: Iczelion's Win32 Assembly Homepage, found at: http://spiff.tripnet.se/~iczelion/ and the forums mention below. Regards,
__________________
JMI |
|
#6
|
|||
|
|||
|
Def for ICE
Quote:
Before the advent of software based debuggers, there was ICE (In Circuit Emulation). In those very early days you plugged your ICE hardware into the CPU socket and your CPU into the ICE so there was a layer of hardware between the CPU and the computer. Since the ICE saw the address and data lines it could in a way "look" over the shoulder of the CPU and since the CPU was getting it's clock from the ICE that's how single stepping and break pointing was done. Output was LED's for the data and address busses. Hence when this was abstracted into software you got "soft" ICE and so on. Before the advent of the 386 you didn't really have a very sophisticated way of building these very low level tools. Things are much better now, although the infrastucture sometimes gets in the way. dcow |
![]() |
| Thread Tools | |
| Display Modes | |
|
|
Similar Threads
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| Site like crackmes.de to learn RE | mesagio | General Discussion | 5 | 01-17-2018 21:38 |
| could help me learn assembly language | kcire_eae | General Discussion | 12 | 08-18-2014 09:33 |
| When will Crapkey learn ??? | Numega Softice | General Discussion | 4 | 06-10-2004 14:44 |
| Where can I learn HASP tutorial? | tumtum | General Discussion | 3 | 11-09-2003 00:25 |