Index: tools/traceline/traceline/stubs.asm |
diff --git a/tools/traceline/traceline/stubs.asm b/tools/traceline/traceline/stubs.asm |
new file mode 100755 |
index 0000000000000000000000000000000000000000..d556b6bba59f90e491ee671565f6008c98a83a29 |
--- /dev/null |
+++ b/tools/traceline/traceline/stubs.asm |
@@ -0,0 +1,132 @@ |
+; Copyright (c) 2009 The Chromium Authors. All rights reserved. |
+; Use of this source code is governed by a BSD-style license that can be |
+; found in the LICENSE file. |
+ |
+; This file is just a convenient place for experimenting with x86 encodings. |
+ |
+BITS 32 |
+ |
+; sldt to detect which processor we are running on. |
+sldt eax |
+sidt [esp] |
+sidt [esp+2] |
+ |
+lea eax, [fs:0] |
+ |
+mov eax, [fs:0x18] |
+ |
+mov ebx, 0x1234567 |
+mov eax, 0x1234567 |
+ |
+rdtsc |
+ |
+push eax |
+pop eax |
+ |
+mov eax, [ecx] |
+mov eax, [esp+4] |
+mov ebx, [esp+4] |
+ |
+lock xadd [eax], eax |
+lock xadd [ecx], ecx |
+lock xadd [ecx], eax |
+ |
+jmp eax |
+jmp edx |
+ |
+lodsd |
+ |
+rep stosb |
+ |
+rep movsb |
+ |
+mov eax, ebx |
+mov edx, edx |
+ |
+mov eax, eax |
+ |
+stosd |
+ |
+add eax, eax |
+add edi, ecx |
+ |
+and eax, 0x0000ffff |
+and ecx, 0x0000ffff |
+and edx, 0x0000ffff |
+ |
+add edi, 0x12345 |
+add eax, 0x12345 |
+add ecx, 0x12345 |
+ |
+push 0x12 |
+push BYTE 0x12 |
+ |
+mov eax, [ebp+8] |
+ |
+mov eax, 0x1234 |
+mov [fs:0], eax |
+ |
+call 0x1234 |
+ |
+call eax |
+call ecx |
+ |
+add ebx, BYTE 3 |
+or ecx, 0xffff |
+or eax, 0xffff |
+ |
+mov eax, [esp+24] |
+ |
+movsd |
+movsb |
+ |
+jmp blah |
+blah: |
+jmp blah |
+ |
+cmp eax, 0x1234567 |
+cmp ecx, 0x1234567 |
+je NEAR blah2 |
+jo NEAR blah2 |
+blah2: |
+ |
+add esp, 12 |
+add esp, BYTE 12 |
+sub esp, BYTE 12 |
+ |
+cmp eax, 12 |
+cmp ecx, BYTE 12 |
+ |
+cmp WORD [esp+6], 0x6666 |
+ |
+push DWORD [edi-4] |
+push DWORD [edi-8] |
+push DWORD [edi-12] |
+push DWORD [edi-16] |
+push DWORD [edi-20] |
+ |
+x: |
+loop x |
+ |
+mov edx, [fs:0x4] |
+ |
+cmp ecx, ecx |
+cmp ecx, ebx |
+cmp ebx, ebx |
+ |
+mov eax,[dword fs:0x24] |
+mov eax,[fs:0x24] |
+ |
+mov ecx,[dword fs:0x24] |
+mov ecx,[fs:0x24] |
+ |
+mov eax, [ebx+12] |
+mov ebx, [ebx+12] |
+ |
+cmovo eax, eax |
+ |
+mov eax, eax |
+ |
+xchg eax, ebx |
+xchg ebx, ecx |
+xchg ebx, [esp+4] |