Skip to content

Commit b173903

Browse files
committed
fix negative offsets
1 parent 4a7d831 commit b173903

File tree

2 files changed

+8
-2
lines changed

2 files changed

+8
-2
lines changed

x86/x86asm/decode.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -537,7 +537,7 @@ Decode:
537537
if pos+2 > len(src) {
538538
return truncated(src, mode)
539539
}
540-
mem.Disp = int64(binary.LittleEndian.Uint16(src[pos:]))
540+
mem.Disp = int64(int16(binary.LittleEndian.Uint16(src[pos:])))
541541
pos += 2
542542
}
543543

@@ -611,7 +611,7 @@ Decode:
611611
}
612612
dispoff = pos
613613
displen = 4
614-
mem.Disp = int64(binary.LittleEndian.Uint32(src[pos:]))
614+
mem.Disp = int64(int32(binary.LittleEndian.Uint32(src[pos:])))
615615
pos += 4
616616
}
617617

x86/x86asm/testdata/decode.txt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4417,6 +4417,9 @@
44174417
668d11|223344556677885f5f5f5f5f5f 64 gnu lea (%rcx),%dx
44184418
668d11|223344556677885f5f5f5f5f5f 64 intel lea dx, ptr [rcx]
44194419
668d11|223344556677885f5f5f5f5f5f 64 plan9 LEAW 0(CX), DX
4420+
8d8f0f00ffff|556677885f5f5f5f5f5f 64 intel lea ecx, ptr [rdi-0xfff1]
4421+
8d8f0f00ffff|556677885f5f5f5f5f5f 64 plan9 LEAL -0xfff1(DI), CX
4422+
8d8f0f00ffff|556677885f5f5f5f5f5f 64 gnu lea -0xfff1(%rdi),%ecx
44204423
668ec0|11223344556677885f5f5f5f5f 32 intel mov es, ax
44214424
668ec0|11223344556677885f5f5f5f5f 32 plan9 MOVW AX, ES
44224425
668ec0|11223344556677885f5f5f5f5f 64 gnu mov %ax,%es
@@ -6773,6 +6776,9 @@ c441305ec2|556677885f5f5f5f5f5f5f 64 gnu vdivps %xmm10,%xmm9,%xmm8
67736776
c4c17a1009|556677885f5f5f5f5f5f5f 64 intel vmovss xmm1, dword ptr [r9]
67746777
c4c17a1009|556677885f5f5f5f5f5f5f 64 plan9 VMOVSS 0(R9), X1
67756778
c4c17a1009|556677885f5f5f5f5f5f5f 64 gnu vmovss (%r9),%xmm1
6779+
c4817a11048a|6677885f5f5f5f5f5f5f 64 intel vmovss dword ptr [r10+r9*4], xmm0
6780+
c4817a11048a|6677885f5f5f5f5f5f5f 64 plan9 VMOVSS X0, 0(R10)(R9*4)
6781+
c4817a11048a|6677885f5f5f5f5f5f5f 64 gnu vmovss %xmm0,(%r10,%r9,4)
67766782
c5f5efe2|44556677885f5f5f5f5f5f5f 64 intel vpxor ymm4, ymm1, ymm2
67776783
c5f5efe2|44556677885f5f5f5f5f5f5f 64 plan9 VPXOR Y2, Y1, Y4
67786784
c5f5efe2|44556677885f5f5f5f5f5f5f 64 gnu vpxor %ymm2,%ymm1,%ymm4

0 commit comments

Comments
 (0)