mirror of
https://github.com/golang/go
synced 2024-11-19 04:44:41 -07:00
cmd/asm: add end to end test for 386
Change-Id: I6514f69b979d064b6a3c4b5d0828cc94f485cac2 Reviewed-on: https://go-review.googlesource.com/5694 Reviewed-by: Russ Cox <rsc@golang.org>
This commit is contained in:
parent
4241b758af
commit
df5cfe7c1f
@ -81,3 +81,7 @@ func TestARMEndToEnd(t *testing.T) {
|
||||
func TestAMD64EndToEnd(t *testing.T) {
|
||||
testEndToEnd(t, "amd64")
|
||||
}
|
||||
|
||||
func Test386EndToEnd(t *testing.T) {
|
||||
testEndToEnd(t, "386")
|
||||
}
|
||||
|
48
src/cmd/asm/internal/asm/testdata/386.out
vendored
Normal file
48
src/cmd/asm/internal/asm/testdata/386.out
vendored
Normal file
@ -0,0 +1,48 @@
|
||||
5 00001 (testdata/386.s:5) TEXT foo+0(SB),$0
|
||||
8 00002 (testdata/386.s:8) SETCC ,AX
|
||||
9 00003 (testdata/386.s:9) SETCC ,foo+4(SB)
|
||||
12 00004 (testdata/386.s:12) DIVB AX,
|
||||
13 00005 (testdata/386.s:13) DIVB foo+4(SB),
|
||||
14 00006 (testdata/386.s:14) PUSHL $foo+4(SB),
|
||||
15 00007 (testdata/386.s:15) POPL ,AX
|
||||
18 00008 (testdata/386.s:18) SUBB $1,AX
|
||||
19 00009 (testdata/386.s:19) SUBB $1,foo+4(SB)
|
||||
20 00010 (testdata/386.s:20) SUBB BX,AX
|
||||
21 00011 (testdata/386.s:21) SUBB BX,foo+4(SB)
|
||||
24 00012 (testdata/386.s:24) CMPB AX,$1
|
||||
25 00013 (testdata/386.s:25) CMPB foo+4(SB),$4
|
||||
26 00014 (testdata/386.s:26) CMPB BX,AX
|
||||
27 00015 (testdata/386.s:27) CMPB foo+4(SB),BX
|
||||
31 00016 (testdata/386.s:31) JCS ,
|
||||
32 00017 (testdata/386.s:32) JCS ,16(PC)
|
||||
35 00018 (testdata/386.s:35) CALL ,AX
|
||||
36 00019 (testdata/386.s:36) JMP ,AX
|
||||
37 00020 (testdata/386.s:37) CALL ,type=16
|
||||
38 00021 (testdata/386.s:38) JMP ,$4
|
||||
39 00022 (testdata/386.s:39) JMP ,16
|
||||
40 00023 (testdata/386.s:40) CALL ,foo+0(SB)
|
||||
42 00024 (testdata/386.s:42) CALL ,foo+4(SB)(AX*4)
|
||||
43 00025 (testdata/386.s:43) CALL ,4(SP)
|
||||
44 00026 (testdata/386.s:44) CALL ,(AX)
|
||||
45 00027 (testdata/386.s:45) CALL ,(SP)
|
||||
47 00028 (testdata/386.s:47) CALL ,(AX)(AX*4)
|
||||
48 00029 (testdata/386.s:48) CALL ,4(SP)
|
||||
49 00030 (testdata/386.s:49) CALL ,(AX)
|
||||
50 00031 (testdata/386.s:50) CALL ,(SP)
|
||||
52 00032 (testdata/386.s:52) JMP ,(AX)(AX*4)
|
||||
55 00033 (testdata/386.s:55) NOP ,
|
||||
56 00034 (testdata/386.s:56) NOP AX,
|
||||
57 00035 (testdata/386.s:57) NOP foo+4(SB),
|
||||
60 00036 (testdata/386.s:60) SHLL $4,BX
|
||||
61 00037 (testdata/386.s:61) SHLL $4,foo+4(SB)
|
||||
62 00038 (testdata/386.s:62) SHLL $4,foo+4(SB):AX
|
||||
65 00039 (testdata/386.s:65) MOVL AX,BX
|
||||
66 00040 (testdata/386.s:66) MOVL $4,BX
|
||||
69 00041 (testdata/386.s:69) IMULL AX,
|
||||
70 00042 (testdata/386.s:70) IMULL $4,CX
|
||||
71 00043 (testdata/386.s:71) IMULL AX,BX
|
||||
74 00044 (testdata/386.s:74) CMPPD X0,$4,X1
|
||||
75 00045 (testdata/386.s:75) CMPPD X0,foo+4(SB)
|
||||
78 00046 (testdata/386.s:78) PINSRD (AX),$1,X0
|
||||
79 00047 (testdata/386.s:79) PINSRD foo+4(FP),$2,X0
|
||||
82 00048 (testdata/386.s:82) RET ,
|
82
src/cmd/asm/internal/asm/testdata/386.s
vendored
Normal file
82
src/cmd/asm/internal/asm/testdata/386.s
vendored
Normal file
@ -0,0 +1,82 @@
|
||||
// This input was created by taking the instruction productions in
|
||||
// the old assembler's (8a's) grammar and hand-writing complete
|
||||
// instructions for each rule, to guarantee we cover the same space.
|
||||
|
||||
TEXT foo(SB), 0, $0
|
||||
|
||||
// LTYPE1 nonrem { outcode(int($1), &$2); }
|
||||
SETCC AX
|
||||
SETCC foo+4(SB)
|
||||
|
||||
// LTYPE2 rimnon { outcode(int($1), &$2); }
|
||||
DIVB AX
|
||||
DIVB foo+4(SB)
|
||||
PUSHL $foo+4(SB)
|
||||
POPL AX // balance PUSHL
|
||||
|
||||
// LTYPE3 rimrem { outcode(int($1), &$2); }
|
||||
SUBB $1, AX
|
||||
SUBB $1, foo+4(SB)
|
||||
SUBB BX, AX
|
||||
SUBB BX, foo+4(SB)
|
||||
|
||||
// LTYPE4 remrim { outcode(int($1), &$2); }
|
||||
CMPB AX, $1
|
||||
CMPB foo+4(SB), $4
|
||||
CMPB BX, AX
|
||||
CMPB foo+4(SB), BX
|
||||
|
||||
// LTYPER nonrel { outcode(int($1), &$2); }
|
||||
label:
|
||||
JC label
|
||||
JC -1(PC)
|
||||
|
||||
// LTYPEC spec3 { outcode(int($1), &$2); }
|
||||
CALL AX
|
||||
JMP *AX
|
||||
CALL *foo(SB)
|
||||
JMP $4
|
||||
JMP label
|
||||
CALL foo(SB)
|
||||
CALL (AX*4)
|
||||
CALL foo+4(SB)(AX*4)
|
||||
CALL *4(SP)
|
||||
CALL *(AX)
|
||||
CALL *(SP)
|
||||
CALL *(AX*4)
|
||||
CALL *(AX)(AX*4)
|
||||
CALL 4(SP)
|
||||
CALL (AX)
|
||||
CALL (SP)
|
||||
CALL (AX*4)
|
||||
JMP (AX)(AX*4)
|
||||
|
||||
// LTYPEN spec4 { outcode(int($1), &$2); }
|
||||
NOP
|
||||
NOP AX
|
||||
NOP foo+4(SB)
|
||||
|
||||
// LTYPES spec5 { outcode(int($1), &$2); }
|
||||
SHLL $4, BX
|
||||
SHLL $4, foo+4(SB)
|
||||
SHLL $4, foo+4(SB):AX
|
||||
|
||||
// LTYPEM spec6 { outcode(int($1), &$2); }
|
||||
MOVL AX, BX
|
||||
MOVL $4, BX
|
||||
|
||||
// LTYPEI spec7 { outcode(int($1), &$2); }
|
||||
IMULL AX
|
||||
IMULL $4, CX
|
||||
IMULL AX, BX
|
||||
|
||||
// LTYPEXC spec9 { outcode(int($1), &$2); }
|
||||
CMPPD X0, X1, 4
|
||||
CMPPD X0, foo+4(SB), 4
|
||||
|
||||
// LTYPEX spec10 { outcode(int($1), &$2); }
|
||||
PINSRD $1, (AX), X0
|
||||
PINSRD $2, foo+4(FP), X0
|
||||
|
||||
// LTYPE0 nonnon { outcode(int($1), &$2); }
|
||||
RET
|
Loading…
Reference in New Issue
Block a user