123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559 |
- /* some directive tests */
- .byte 0xff
- .byte 1, 2, 3
- .short 1, 2, 3
- .word 1, 2, 3
- .long 1, 2, 3
- .int 1, 2, 3
- .align 8
- .byte 1
- .align 16, 0x90
- .skip 3
- .skip 15, 0x90
- .string "hello\0world"
- /* some label tests */
- movl %eax, %ebx
- L1:
- movl %eax, %ebx
- mov 0x10000, %eax
- L2:
- movl $L2 - L1, %ecx
- var1:
- nop ; nop ; nop ; nop
- mov var1, %eax
- /* instruction tests */
- movl %eax, %ebx
- mov 0x10000, %eax
- mov 0x10000, %ax
- mov 0x10000, %al
- mov %al, 0x10000
-
- mov $1, %edx
- mov $1, %dx
- mov $1, %dl
- movb $2, 0x100(%ebx,%edx,2)
- movw $2, 0x100(%ebx,%edx,2)
- movl $2, 0x100(%ebx,%edx,2)
- movl %eax, 0x100(%ebx,%edx,2)
- movl 0x100(%ebx,%edx,2), %edx
- movw %ax, 0x100(%ebx,%edx,2)
- mov %eax, 0x12(,%edx,2)
-
- mov %cr3, %edx
- mov %ecx, %cr3
- movl %cr3, %eax
- movl %tr3, %eax
- movl %db3, %ebx
- movl %dr6, %eax
- movl %fs, %ecx
- movl %ebx, %fs
- movsbl 0x1000, %eax
- movsbw 0x1000, %ax
- movswl 0x1000, %eax
- movzbl 0x1000, %eax
- movzbw 0x1000, %ax
- movzwl 0x1000, %eax
-
- movzb 0x1000, %eax
- movzb 0x1000, %ax
-
-
- pushl %eax
- pushw %ax
- push %eax
- push %cs
- push %gs
- push $1
- push $100
-
- popl %eax
- popw %ax
- pop %eax
- pop %ds
- pop %fs
-
- xchg %eax, %ecx
- xchg %edx, %eax
- xchg %bx, 0x10000
- xchg 0x10000, %ebx
- xchg 0x10000, %dl
- in $100, %al
- in $100, %ax
- in $100, %eax
- in %dx, %al
- in %dx, %ax
- in %dx, %eax
- inb %dx
- inw %dx
- inl %dx
- out %al, $100
- out %ax, $100
- out %eax, $100
- /* NOTE: gas is bugged here, so size must be added */
- outb %al, %dx
- outw %ax, %dx
- outl %eax, %dx
- leal 0x1000(%ebx), %ecx
- lea 0x1000(%ebx), %ecx
- les 0x2000, %eax
- lds 0x2000, %ebx
- lfs 0x2000, %ecx
- lgs 0x2000, %edx
- lss 0x2000, %edx
- addl $0x123, %eax
- add $0x123, %ebx
- addl $0x123, 0x100
- addl $0x123, 0x100(%ebx)
- addl $0x123, 0x100(%ebx,%edx,2)
- addl $0x123, 0x100(%esp)
- addl $0x123, (%ebp)
- addl $0x123, (%esp)
- cmpl $0x123, (%esp)
- add %eax, (%ebx)
- add (%ebx), %eax
-
- or %dx, (%ebx)
- or (%ebx), %si
-
- add %cl, (%ebx)
- add (%ebx), %dl
- inc %edx
- incl 0x10000
- incb 0x10000
- dec %dx
-
- test $1, %al
- test $1, %cl
- testl $1, 0x1000
- testb $1, 0x1000
- testw $1, 0x1000
- test %eax, %ebx
- test %eax, 0x1000
- test 0x1000, %edx
- not %edx
- notw 0x10000
- notl 0x10000
- notb 0x10000
- neg %edx
- negw 0x10000
- negl 0x10000
- negb 0x10000
- imul %ecx
- mul %edx
- mulb %cl
- imul %eax, %ecx
- imul 0x1000, %cx
- imul $10, %eax, %ecx
- imul $10, %ax, %cx
- imul $10, %eax
- imul $0x1100000, %eax
- imul $1, %eax
-
- idivw 0x1000
- div %ecx
- div %bl
- div %ecx, %eax
- shl %edx
- shl $10, %edx
- shl %cl, %edx
- shld $1, %eax, %edx
- shld %cl, %eax, %edx
- shld %eax, %edx
- shrd $1, %eax, %edx
- shrd %cl, %eax, %edx
- shrd %eax, %edx
- L4:
- call 0x1000
- call L4
- call *%eax
- call *0x1000
- call func1
- lcall $0x100, $0x1000
- jmp 0x1000
- jmp *%eax
- jmp *0x1000
- ljmp $0x100, $0x1000
- ret
- ret $10
- lret
- lret $10
- enter $1234, $10
- L3:
- jo 0x1000
- jnp 0x1001
- jne 0x1002
- jg 0x1003
- jo L3
- jnp L3
- jne L3
- jg L3
- loopne L3
- loopnz L3
- loope L3
- loopz L3
- loop L3
- jecxz L3
-
- seto %al
- setnp 0x1000
- setl 0xaaaa
- setg %dl
- fadd
- fadd %st(1), %st
- fadd %st(3)
- faddp %st(5)
- faddp
- faddp %st(1), %st
- fadds 0x1000
- fiadds 0x1002
- faddl 0x1004
- fiaddl 0x1006
- fmul
- fmul %st(1), %st
- fmul %st(3)
- fmulp %st(5)
- fmulp
- fmulp %st(1), %st
- fmuls 0x1000
- fimuls 0x1002
- fmull 0x1004
- fimull 0x1006
- fsub
- fsub %st(1), %st
- fsub %st(3)
- fsubp %st(5)
- fsubp
- fsubp %st(1), %st
- fsubs 0x1000
- fisubs 0x1002
- fsubl 0x1004
- fisubl 0x1006
- fsubr
- fsubr %st(1), %st
- fsubr %st(3)
- fsubrp %st(5)
- fsubrp
- fsubrp %st(1), %st
- fsubrs 0x1000
- fisubrs 0x1002
- fsubrl 0x1004
- fisubrl 0x1006
- fdiv
- fdiv %st(1), %st
- fdiv %st(3)
- fdivp %st(5)
- fdivp
- fdivp %st(1), %st
- fdivs 0x1000
- fidivs 0x1002
- fdivl 0x1004
- fidivl 0x1006
- fcom %st(3)
- fcoms 0x1000
- ficoms 0x1002
- fcoml 0x1004
- ficoml 0x1006
- fcomp %st(5)
- fcomp
- fcompp
- fcomps 0x1000
- ficomps 0x1002
- fcompl 0x1004
- ficompl 0x1006
- fld %st(5)
- fldl 0x1000
- flds 0x1002
- fildl 0x1004
- fst %st(4)
- fstp %st(6)
- fstpt 0x1006
- fbstp 0x1008
- fxch
- fxch %st(4)
- fucom %st(6)
- fucomp %st(3)
- fucompp
- finit
- fninit
- fldcw 0x1000
- fnstcw 0x1002
- fstcw 0x1002
- fnstsw 0x1004
- fnstsw %eax
- fstsw 0x1004
- fstsw %eax
- fnclex
- fclex
- fnstenv 0x1000
- fstenv 0x1000
- fldenv 0x1000
- fnsave 0x1002
- fsave 0x1000
- frstor 0x1000
- ffree %st(7)
- ffreep %st(6)
-
- ftst
- fxam
- fld1
- fldl2t
- fldl2e
- fldpi
- fldlg2
- fldln2
- fldz
- f2xm1
- fyl2x
- fptan
- fpatan
- fxtract
- fprem1
- fdecstp
- fincstp
- fprem
- fyl2xp1
- fsqrt
- fsincos
- frndint
- fscale
- fsin
- fcos
- fchs
- fabs
- fnop
- fwait
- bswap %edx
- xadd %ecx, %edx
- xaddb %dl, 0x1000
- xaddw %ax, 0x1000
- xaddl %eax, 0x1000
- cmpxchg %ecx, %edx
- cmpxchgb %dl, 0x1000
- cmpxchgw %ax, 0x1000
- cmpxchgl %eax, 0x1000
- invlpg 0x1000
- cmpxchg8b 0x1002
- fcmovb %st(5), %st
- fcmove %st(5), %st
- fcmovbe %st(5), %st
- fcmovu %st(5), %st
- fcmovnb %st(5), %st
- fcmovne %st(5), %st
- fcmovnbe %st(5), %st
- fcmovnu %st(5), %st
- fcomi %st(5), %st
- fucomi %st(5), %st
- fcomip %st(5), %st
- fucomip %st(5), %st
- cmovo 0x1000, %eax
- cmovs 0x1000, %eax
- cmovns %edx, %edi
- int $3
- int $0x10
- pusha
- popa
- clc
- cld
- cli
- clts
- cmc
- lahf
- sahf
- pushfl
- popfl
- pushf
- popf
- stc
- std
- sti
- aaa
- aas
- daa
- das
- aad
- aam
- cbw
- cwd
- cwde
- cdq
- cbtw
- cwtd
- cwtl
- cltd
- leave
- int3
- into
- iret
- rsm
- hlt
- wait
- nop
- /* XXX: handle prefixes */
- #if 0
- aword
- addr16
- #endif
- lock
- rep
- repe
- repz
- repne
- repnz
-
- invd
- wbinvd
- cpuid
- wrmsr
- rdtsc
- rdmsr
- rdpmc
- ud2
- emms
- movd %edx, %mm3
- movd 0x1000, %mm2
- movd %mm4, %ecx
- movd %mm5, 0x1000
-
- movq 0x1000, %mm2
- movq %mm4, 0x1000
-
- pand 0x1000, %mm3
- pand %mm4, %mm5
-
- psllw $1, %mm6
- psllw 0x1000, %mm7
- psllw %mm2, %mm7
- xlat
- cmpsb
- scmpw
- insl
- outsw
- lodsb
- slodl
- movsb
- movsl
- smovb
- scasb
- sscaw
- stosw
- sstol
- bsf 0x1000, %ebx
- bsr 0x1000, %ebx
- bt %edx, 0x1000
- btl $2, 0x1000
- btc %edx, 0x1000
- btcl $2, 0x1000
- btr %edx, 0x1000
- btrl $2, 0x1000
- bts %edx, 0x1000
- btsl $2, 0x1000
-
-
- boundl %edx, 0x10000
- boundw %bx, 0x1000
-
- arpl %bx, 0x1000
- lar 0x1000, %eax
- lgdt 0x1000
- lidt 0x1000
- lldt 0x1000
- lmsw 0x1000
- lsl 0x1000, %ecx
- ltr 0x1000
-
- sgdt 0x1000
- sidt 0x1000
- sldt 0x1000
- smsw 0x1000
- str 0x1000
-
- verr 0x1000
- verw 0x1000
-
- push %ds
- pushw %ds
- pushl %ds
- pop %ds
- popw %ds
- popl %ds
- fxsave 1(%ebx)
- fxrstor 1(%ecx)
- pushl $1
- pushw $1
- push $1
|