author | Jan Vrany <jan.vrany@fit.cvut.cz> |
Wed, 15 Jun 2016 23:46:29 +0100 | |
changeset 23 | d2d9a2d4d6bf |
parent 10 | 588414eaacff |
child 24 | 5aace704e3c8 |
permissions | -rw-r--r-- |
3
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1 |
"{ Package: 'jv:dragonfly/asm' }" |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2 |
|
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3 |
"{ NameSpace: Smalltalk }" |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4 |
|
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5 |
TestCase subclass:#AJx86AssemblerTests |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
6 |
instanceVariableNames:'asm' |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
7 |
classVariableNames:'' |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
8 |
poolDictionaries:'AJx86Registers' |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
9 |
category:'AsmJit-Tests' |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
10 |
! |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
11 |
|
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
12 |
!AJx86AssemblerTests methodsFor:'running'! |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
13 |
|
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
14 |
setUp |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
15 |
super setUp. |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
16 |
asm := self newAssembler. |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
17 |
! ! |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
18 |
|
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
19 |
!AJx86AssemblerTests methodsFor:'tests'! |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
20 |
|
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
21 |
testAssembly1 |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
22 |
|
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
23 |
asm |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
24 |
push: EBP; |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
25 |
mov: ESP -> EBP; |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
26 |
mov: 1024 -> EAX; |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
27 |
mov: EBP -> ESP; |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
28 |
pop: EBP; |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
29 |
ret. |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
30 |
|
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
31 |
self assert: asm bytes = #(85 139 236 184 0 4 0 0 139 229 93 195) asByteArray |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
32 |
! |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
33 |
|
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
34 |
testAssembly3 |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
35 |
|
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
36 |
" instructions without operands. |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
37 |
|
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
38 |
(AJInstructionDescription instructions select: [:each | each group = #emit]) keys asSortedCollection |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
39 |
" |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
40 |
| str | |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
41 |
str := |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
42 |
#( |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
43 |
#cbw 16r66 16r98 |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
44 |
#cdq 16r99 |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
45 |
"#cdqe 64 bit " |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
46 |
#clc 16rF8 |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
47 |
#cld 16rFC |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
48 |
#cmc 16rF5 |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
49 |
#cpuid 16r0F 16rA2 |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
50 |
"#cqo 64 bit " |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
51 |
#cwd 16r66 16r99 |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
52 |
#cwde 16r98 |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
53 |
#daa 16r27 |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
54 |
#das 16r2F |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
55 |
#emms 16r0F 16r77 |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
56 |
#f2xm1 16rD9 16rF0 |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
57 |
#fabs 16rD9 16rE1 |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
58 |
#fchs 16rD9 16rE0 |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
59 |
#fclex 16r9B 16rDB 16rE2 |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
60 |
#fcompp 16rDE 16rD9 |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
61 |
#fcos 16rD9 16rFF |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
62 |
#fdecstp 16rD9 16rF6 |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
63 |
#fincstp 16rD9 16rF7 |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
64 |
#finit 16r9B 16rDB 16rE3 |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
65 |
#fld1 16rD9 16rE8 |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
66 |
#fldl2e 16rD9 16rEA |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
67 |
#fldl2t 16rD9 16rE9 |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
68 |
#fldlg2 16rD9 16rEC |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
69 |
#fldln2 16rD9 16rED |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
70 |
#fldpi 16rD9 16rEB |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
71 |
#fldz 16rD9 16rEE |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
72 |
#fnclex 16rDB 16rE2 |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
73 |
#fninit 16rDB 16rE3 |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
74 |
#fnop 16rD9 16rD0 |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
75 |
#fpatan 16rD9 16rF3 |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
76 |
#fprem 16rD9 16rF8 |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
77 |
#fprem1 16rD9 16rF5 |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
78 |
#fptan 16rD9 16rF2 |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
79 |
#frndint 16rD9 16rFC |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
80 |
#fscale 16rD9 16rFD |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
81 |
#fsin 16rD9 16rFE |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
82 |
#fsincos 16rD9 16rFB |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
83 |
#fsqrt 16rD9 16rFA |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
84 |
#ftst 16rD9 16rE4 |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
85 |
#fucompp 16rDA 16rE9 |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
86 |
#fwait 16r9B |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
87 |
#fxam 16rD9 16rE5 |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
88 |
#fxtract 16rD9 16rF4 |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
89 |
#fyl2x 16rD9 16rF1 |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
90 |
#fyl2xp1 16rD9 16rF9 |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
91 |
#int3 16rCC |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
92 |
#leave 16rC9 |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
93 |
#lfence 16r0F 16rAE 16rE8 |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
94 |
#lock 16rF0 "prefix" |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
95 |
#mfence 16r0F 16rAE 16rF0 |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
96 |
#monitor 16r0F 16r01 16rC8 |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
97 |
#mwait 16r0F 16r01 16rC9 |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
98 |
#nop 16r90 |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
99 |
#pause 16rF3 16r90 |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
100 |
#popad 16r61 |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
101 |
#popfd 16r9D |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
102 |
" #popfq 16r48 16r9D - 64 bit " |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
103 |
#pushad 16r60 |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
104 |
#pushf 16r66 16r9C |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
105 |
#pushfd 16r9C |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
106 |
" #pushfq -64 bit" |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
107 |
#rdtsc 16r0F 16r31 |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
108 |
#rdtscp 16r0F 16r01 16rF9 |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
109 |
#sahf 16r9E |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
110 |
#sfence 16r0F 16rAE 16rF8 |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
111 |
#stc 16rF9 |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
112 |
#std 16rFD |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
113 |
#ud2 16r0F 16r0B |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
114 |
#std 16rFD "dummy" |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
115 |
) readStream. |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
116 |
|
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
117 |
[ str atEnd ] whileFalse: [ |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
118 |
| instr tst | |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
119 |
instr := str next. |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
120 |
tst := OrderedCollection new. |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
121 |
[ str peek isInteger ] whileTrue: [ tst add: str next ]. |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
122 |
|
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
123 |
asm reset noStackFrame. |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
124 |
asm perform: instr. |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
125 |
self assert: (asm bytes = tst asByteArray ) |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
126 |
]. |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
127 |
! |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
128 |
|
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
129 |
testAssemblyImmAddr |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
130 |
"test generating immediate address, |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
131 |
note GDB disassembling it to: |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
132 |
0x1fab <instructions.1862>: 0x8b 0x05 0xef 0xbe 0xad 0xde |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
133 |
0x00001fab <instructions.1862+0>: mov 0xdeadbeef,%eax |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
134 |
which is WRONG!! |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
135 |
" |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
136 |
|
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
137 |
asm |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
138 |
mov: 16rdeadbeef asUImm ptr32 to: asm EAX. |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
139 |
|
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
140 |
" 8b05efbeadde mov eax, [deadbeef] " |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
141 |
|
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
142 |
self assert: asm bytes = #[139 5 239 190 173 222] |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
143 |
|
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
144 |
! |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
145 |
|
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
146 |
testAssemblyMemBase |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
147 |
|
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
148 |
asm |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
149 |
mov: EAX ptr -> EAX; |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
150 |
mov: ESP ptr -> EAX; |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
151 |
mov: EBP ptr -> EAX. |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
152 |
|
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
153 |
self assert: asm bytes = #(16r8B 0 16r8B 16r04 16r24 16r8B 16r45 16r00) asByteArray |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
154 |
! |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
155 |
|
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
156 |
testAssemblyMemBaseDisp |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
157 |
|
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
158 |
asm |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
159 |
mov: EAX ptr + 1 -> EAX; |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
160 |
mov: EBX ptr + ECX -> EAX. |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
161 |
|
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
162 |
self assert: asm bytes = #(16r8B 16r40 16r01 16r8B 16r04 16r0B) asByteArray |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
163 |
! |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
164 |
|
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
165 |
testAssemblyMemBaseDisp2 |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
166 |
|
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
167 |
asm |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
168 |
mov: EAX ptr - 1 -> EAX; |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
169 |
mov: EBX ptr + ECX * 2 - 5 -> EAX. |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
170 |
|
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
171 |
self assert: asm bytes = #(16r8B 16r40 16rFF 16r8B 16r44 16r4B 16rFB) asByteArray |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
172 |
! |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
173 |
|
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
174 |
testAssemblyMemBytes |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
175 |
|
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
176 |
asm |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
177 |
mov: ((ESI ptr + ECX) size: 1) -> BL; |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
178 |
mov: BL -> ((ESI ptr + ECX) size:1). |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
179 |
|
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
180 |
self assert: asm bytes = #(16r8A 16r1C 16r0E 16r88 16r1C 16r0E ) asByteArray |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
181 |
! |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
182 |
|
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
183 |
testBitTest |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
184 |
|
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
185 |
asm |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
186 |
bt: EAX with: 0. |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
187 |
|
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
188 |
self assert: asm bytes = #(16r0F 16rBA 16rE0 16r00) asByteArray |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
189 |
! |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
190 |
|
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
191 |
testCall |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
192 |
|
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
193 |
asm |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
194 |
call: EAX; |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
195 |
call: EAX ptr - 4; |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
196 |
call: EAX ptr. |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
197 |
self assert: asm bytes = #(255 208 255 80 252 255 16) asByteArray |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
198 |
! |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
199 |
|
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
200 |
testForwardJumps |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
201 |
|
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
202 |
asm |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
203 |
jmp: #label1; |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
204 |
label: #label1. |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
205 |
|
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
206 |
self assert: asm bytes = #(16rEB 0 ) asByteArray. |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
207 |
|
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
208 |
! |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
209 |
|
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
210 |
testImmLabels |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
211 |
|
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
212 |
"test immediates with labels" |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
213 |
|
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
214 |
| code pos | |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
215 |
|
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
216 |
asm |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
217 |
mov: EAX ptr -> EAX; |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
218 |
mov: (16rFFFFFFFF asUImm label: (asm labelNamed: #foo) ) to: EAX. |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
219 |
|
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
220 |
code := asm generatedCode. |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
221 |
pos := code offsetAt: #foo. |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
222 |
|
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
223 |
self assert: (code bytes at: pos+1) = 255. |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
224 |
self assert: (code bytes at: pos+2) = 255. |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
225 |
self assert: (code bytes at: pos+3) = 255. |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
226 |
self assert: (code bytes at: pos+4) = 255. |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
227 |
! |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
228 |
|
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
229 |
testJMPRegister |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
230 |
|
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
231 |
self |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
232 |
assert: [ :assembler | |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
233 |
assembler jmp: assembler EAX ] |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
234 |
bytes: #[ 16rFF 2r11100000 ]. |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
235 |
|
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
236 |
self |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
237 |
assert: [ :assembler | |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
238 |
assembler jmp: assembler ECX ] |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
239 |
bytes: #[ 16rFF 2r11100001 ]. |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
240 |
|
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
241 |
self |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
242 |
assert: [ :assembler | |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
243 |
assembler jmp: assembler EDX ] |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
244 |
bytes: #[ 16rFF 2r11100010 ] |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
245 |
! |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
246 |
|
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
247 |
testJumps |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
248 |
|
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
249 |
asm |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
250 |
label: #label1; |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
251 |
nop; |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
252 |
nop; |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
253 |
nop; |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
254 |
jz: #label1. |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
255 |
|
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
256 |
self assert: asm bytes = #(144 144 144 116 251) asByteArray. |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
257 |
|
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
258 |
|
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
259 |
asm |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
260 |
reset; noStackFrame; |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
261 |
label: #label1. |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
262 |
126 timesRepeat: [ asm nop ]. |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
263 |
asm jz: #label1. |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
264 |
self assert: (asm bytes size = 128). |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
265 |
|
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
266 |
asm |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
267 |
reset; noStackFrame; |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
268 |
label: #label1; |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
269 |
nop; |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
270 |
nop; |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
271 |
nop; |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
272 |
jmp: #label1. |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
273 |
|
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
274 |
self assert: asm bytes = #(144 144 144 235 251) asByteArray. |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
275 |
|
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
276 |
asm |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
277 |
reset; noStackFrame; |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
278 |
jmp: #label1; |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
279 |
label: #label1. |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
280 |
|
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
281 |
self assert: asm bytes = #(16rEB 0 ) asByteArray. |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
282 |
|
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
283 |
! |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
284 |
|
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
285 |
testMovSxZx |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
286 |
|
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
287 |
asm |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
288 |
movsx: asm AX to: asm EAX; |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
289 |
movzx: asm AX to: asm EAX; |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
290 |
movsx: asm AL to: asm EAX; |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
291 |
movzx: asm AH to: asm EAX. |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
292 |
|
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
293 |
self assert: asm bytes = |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
294 |
#[ |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
295 |
16r0F 16rBF 16rC0 |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
296 |
16r0F 16rB7 16rC0 |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
297 |
16r0F 16rBE 16rC0 |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
298 |
16r0F 16rB6 16rC4 ] |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
299 |
! |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
300 |
|
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
301 |
testSyscall |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
302 |
"Syscall instruction is only valid in 64-bit mode" |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
303 |
|
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
304 |
self asmShould: [ :a | a syscall ] raise: Error |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
305 |
! |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
306 |
|
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
307 |
testTest |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
308 |
"Special RAX opcodes" |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
309 |
|
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
310 |
"8bit operand opcode" |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
311 |
asm |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
312 |
test: AL with: 5. |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
313 |
self assert: asm bytes = #[16rA8 05]. |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
314 |
|
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
315 |
|
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
316 |
asm reset; |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
317 |
test: AX with: 5. |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
318 |
"16bit operand Prefix byte, 16bit immediate (LSB)" |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
319 |
self assert: asm bytes = #[16r66 16rA9 05 0]. |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
320 |
|
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
321 |
"32bit operand " |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
322 |
asm reset; |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
323 |
test: EAX with: 1. |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
324 |
self assert: asm bytes = #[16rA9 01 00 00 00]. |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
325 |
|
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
326 |
"Need more assert for non-EAX receiver, non-immediate operands" |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
327 |
|
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
328 |
|
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
329 |
|
4 | 330 |
! |
331 |
||
332 |
tstRegistersOf: asm |
|
333 |
||
334 |
| numRegs | |
|
335 |
numRegs := asm numGPRegisters. |
|
336 |
||
337 |
0 to: numRegs-1 do: [:i | |
|
338 |
self assert: (asm reg8: i) size = 1. |
|
339 |
self assert: (asm reg8: i) index = i. |
|
340 |
||
341 |
self assert: (asm reg16: i) size = 2. |
|
342 |
self assert: (asm reg16: i) index = i. |
|
343 |
||
344 |
self assert: (asm reg32: i) size = 4. |
|
345 |
self assert: (asm reg32: i) index = i. |
|
346 |
||
347 |
self assert: (asm isGPNRegister: (asm nReg: i)). |
|
348 |
||
349 |
asm is64BitMode ifTrue: [ |
|
350 |
self assert: (asm reg64: i) size = 8. |
|
351 |
self assert: (asm reg64: i) index = i. |
|
352 |
] |
|
353 |
]. |
|
354 |
||
355 |
"Created: / 15-12-2015 / 23:59:23 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
3
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
356 |
! ! |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
357 |
|
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
358 |
!AJx86AssemblerTests methodsFor:'tests-FPU'! |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
359 |
|
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
360 |
testFXCH |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
361 |
|
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
362 |
self |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
363 |
assert: [ :a| |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
364 |
a fxch "the same as: asm fxch: asm ST1" ] |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
365 |
bytes: #[ 2r11011001 2r11001001 ] |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
366 |
|
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
367 |
! |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
368 |
|
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
369 |
testFXCHST1 |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
370 |
|
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
371 |
self |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
372 |
assert: [ :a| a fxch: asm ST1 ] |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
373 |
bytes: #[ 2r11011001 2r11001001 ] |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
374 |
|
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
375 |
! ! |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
376 |
|
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
377 |
!AJx86AssemblerTests methodsFor:'tests-data'! |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
378 |
|
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
379 |
setUpDataBytes |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
380 |
^ self setUpDataBytesAlign: 1 |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
381 |
! |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
382 |
|
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
383 |
setUpDataBytesAlign: alignToBytes |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
384 |
|
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
385 |
asm nop. |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
386 |
asm align: alignToBytes. |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
387 |
^ asm db: 16r12. |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
388 |
! |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
389 |
|
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
390 |
testDataBytes |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
391 |
|
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
392 |
|data| |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
393 |
data := self setUpDataBytes. |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
394 |
|
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
395 |
self assert: asm bytes equals: #[144 16r12]. |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
396 |
! |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
397 |
|
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
398 |
testDataBytesAlignDouble |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
399 |
|
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
400 |
|data| |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
401 |
data := self setUpDataBytesAlign: 4. |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
402 |
|
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
403 |
self assert: asm bytes equals: #[144 0 0 0 16r12]. |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
404 |
! |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
405 |
|
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
406 |
testDataBytesAlignQuad |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
407 |
|
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
408 |
|data| |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
409 |
data := self setUpDataBytesAlign: 8. |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
410 |
self assert: asm bytes equals: #[144 0 0 0 0 0 0 0 16r12]. |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
411 |
! |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
412 |
|
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
413 |
testDataBytesAlignWord |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
414 |
|
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
415 |
|data| |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
416 |
data := self setUpDataBytesAlign: 2. |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
417 |
|
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
418 |
self assert: asm bytes equals: #[144 0 16r12]. |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
419 |
! |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
420 |
|
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
421 |
testDataDouble |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
422 |
|
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
423 |
| data| |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
424 |
|
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
425 |
asm nop. |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
426 |
data := asm dd: #[16r78 16r56 16r34 16r12]. |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
427 |
|
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
428 |
self assert: asm bytes equals: #[144 16r78 16r56 16r34 16r12]. |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
429 |
! |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
430 |
|
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
431 |
testDataWord |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
432 |
|
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
433 |
| data| |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
434 |
asm nop. |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
435 |
data := asm dw: #[16r34 16r12]. |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
436 |
|
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
437 |
self assert: asm bytes equals: #[144 16r34 16r12]. |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
438 |
|
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
439 |
|
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
440 |
! ! |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
441 |
|
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
442 |
!AJx86AssemblerTests methodsFor:'utility'! |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
443 |
|
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
444 |
asmShould: aBlock raise: anError |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
445 |
|
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
446 |
self should: [self bytes: aBlock] raise: anError. |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
447 |
! |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
448 |
|
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
449 |
assert: aBlock bytes: aByteArray |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
450 |
|
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
451 |
self assert: (self bytes: aBlock) equals: aByteArray . |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
452 |
! |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
453 |
|
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
454 |
bytes: aBlock |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
455 |
asm := self newAssembler. |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
456 |
aBlock value: asm. |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
457 |
^ asm bytes |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
458 |
! |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
459 |
|
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
460 |
newAssembler |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
461 |
^ AJx86Assembler new |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
462 |
noStackFrame; |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
463 |
yourself |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
464 |
! ! |
483729eb4432
Initial port ot Igor Stasenko's AsmJit
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
465 |