annotate VPThread.s @ 5:f36e9ab2e030
separated asm singleton routines
| author |
Merten Sach <msach@mailbox.tu-berlin.de> |
| date |
Mon, 06 Jun 2011 18:30:00 +0200 |
| parents |
|
| children |
ce4ad44fcc23 |
| rev |
line source |
|
msach@5
|
1
|
|
msach@5
|
2 //Assembly code takes the return addr off the stack and saves
|
|
msach@5
|
3 // into the singleton. The first field in the singleton is the
|
|
msach@5
|
4 // "endInstrAddr" field, and the return addr is at 0x4(%ebp)
|
|
msach@5
|
5 .globl asm_save_ret_to_singleton
|
|
msach@5
|
6 asm_save_ret_to_singleton:
|
|
msach@5
|
7 movl 0x4(%ebp), %eax #get ret address, ebp is the same as in the calling function
|
|
msach@5
|
8 movl 0x4(%esp), %edx #get argument(singletonPtrAddr) from stack
|
|
msach@5
|
9 movl %eax, (%edx) #write ret addr to endInstrAddr field
|
|
msach@5
|
10 ret
|
|
msach@5
|
11
|
|
msach@5
|
12
|
|
msach@5
|
13 //Assembly code changes the return addr on the stack to the one
|
|
msach@5
|
14 // saved into the singleton by the end-singleton-fn
|
|
msach@5
|
15 //The stack's return addr is at 0x4(%%ebp)
|
|
msach@5
|
16 .globl asm_write_ret_from_singleton
|
|
msach@5
|
17 asm_write_ret_from_singleton:
|
|
msach@5
|
18 movl 0x4(%esp), %edx #get singleton addr from stack
|
|
msach@5
|
19 movl (%edx), %eax #get endInstrAddr field
|
|
msach@5
|
20 movl %eax, 0x4(%ebp) #write return addr to the stack of the caller
|
|
msach@5
|
21 ret
|
|
msach@5
|
22
|
|
msach@5
|
23
|