* Moved lcc and q3asm into code/tools

This commit is contained in:
Tim Angus 2005-10-04 15:18:22 +00:00
parent b1cef6352e
commit ad118b9baf
452 changed files with 0 additions and 0 deletions

View file

@ -0,0 +1,92 @@
1 5 8 6 3 7 2 4
1 6 8 3 7 4 2 5
1 7 4 6 8 2 5 3
1 7 5 8 2 4 6 3
2 4 6 8 3 1 7 5
2 5 7 1 3 8 6 4
2 5 7 4 1 8 6 3
2 6 1 7 4 8 3 5
2 6 8 3 1 4 7 5
2 7 3 6 8 5 1 4
2 7 5 8 1 4 6 3
2 8 6 1 3 5 7 4
3 1 7 5 8 2 4 6
3 5 2 8 1 7 4 6
3 5 2 8 6 4 7 1
3 5 7 1 4 2 8 6
3 5 8 4 1 7 2 6
3 6 2 5 8 1 7 4
3 6 2 7 1 4 8 5
3 6 2 7 5 1 8 4
3 6 4 1 8 5 7 2
3 6 4 2 8 5 7 1
3 6 8 1 4 7 5 2
3 6 8 1 5 7 2 4
3 6 8 2 4 1 7 5
3 7 2 8 5 1 4 6
3 7 2 8 6 4 1 5
3 8 4 7 1 6 2 5
4 1 5 8 2 7 3 6
4 1 5 8 6 3 7 2
4 2 5 8 6 1 3 7
4 2 7 3 6 8 1 5
4 2 7 3 6 8 5 1
4 2 7 5 1 8 6 3
4 2 8 5 7 1 3 6
4 2 8 6 1 3 5 7
4 6 1 5 2 8 3 7
4 6 8 2 7 1 3 5
4 6 8 3 1 7 5 2
4 7 1 8 5 2 6 3
4 7 3 8 2 5 1 6
4 7 5 2 6 1 3 8
4 7 5 3 1 6 8 2
4 8 1 3 6 2 7 5
4 8 1 5 7 2 6 3
4 8 5 3 1 7 2 6
5 1 4 6 8 2 7 3
5 1 8 4 2 7 3 6
5 1 8 6 3 7 2 4
5 2 4 6 8 3 1 7
5 2 4 7 3 8 6 1
5 2 6 1 7 4 8 3
5 2 8 1 4 7 3 6
5 3 1 6 8 2 4 7
5 3 1 7 2 8 6 4
5 3 8 4 7 1 6 2
5 7 1 3 8 6 4 2
5 7 1 4 2 8 6 3
5 7 2 4 8 1 3 6
5 7 2 6 3 1 4 8
5 7 2 6 3 1 8 4
5 7 4 1 3 8 6 2
5 8 4 1 3 6 2 7
5 8 4 1 7 2 6 3
6 1 5 2 8 3 7 4
6 2 7 1 3 5 8 4
6 2 7 1 4 8 5 3
6 3 1 7 5 8 2 4
6 3 1 8 4 2 7 5
6 3 1 8 5 2 4 7
6 3 5 7 1 4 2 8
6 3 5 8 1 4 2 7
6 3 7 2 4 8 1 5
6 3 7 2 8 5 1 4
6 3 7 4 1 8 2 5
6 4 1 5 8 2 7 3
6 4 2 8 5 7 1 3
6 4 7 1 3 5 2 8
6 4 7 1 8 2 5 3
6 8 2 4 1 7 5 3
7 1 3 8 6 4 2 5
7 2 4 1 8 5 3 6
7 2 6 3 1 4 8 5
7 3 1 6 8 5 2 4
7 3 8 2 5 1 6 4
7 4 2 5 8 1 3 6
7 4 2 8 6 1 3 5
7 5 3 1 6 8 2 4
8 2 4 1 7 5 3 6
8 2 5 3 1 7 4 6
8 3 1 6 2 5 7 4
8 4 1 3 6 2 7 5

View file

@ -0,0 +1,2 @@
tst/8q.c:30: warning: missing return value
tst/8q.c:39: warning: missing return value

View file

@ -0,0 +1,176 @@
.486
.model flat
extrn __fltused:near
extrn __ftol:near
public _main
_TEXT segment
_main:
push ebx
push esi
push edi
push ebp
mov ebp,esp
sub esp,4
mov dword ptr (-4)[ebp],0
L2:
mov edi,dword ptr (-4)[ebp]
lea edi,[edi*4]
mov dword ptr (_down)[edi],1
mov dword ptr (_up)[edi],1
L3:
inc dword ptr (-4)[ebp]
cmp dword ptr (-4)[ebp],15
jl L2
mov dword ptr (-4)[ebp],0
L6:
mov edi,dword ptr (-4)[ebp]
mov dword ptr (_rows)[edi*4],1
L7:
inc dword ptr (-4)[ebp]
cmp dword ptr (-4)[ebp],8
jl L6
push 0
call _queens
add esp,4
mov eax,0
L1:
mov esp,ebp
pop ebp
pop edi
pop esi
pop ebx
ret
public _queens
_queens:
push ebx
push esi
push edi
push ebp
mov ebp,esp
sub esp,4
mov dword ptr (-4)[ebp],0
L11:
mov edi,dword ptr (-4)[ebp]
cmp dword ptr (_rows)[edi*4],0
je L15
mov esi,dword ptr (20)[ebp]
mov ebx,edi
sub ebx,esi
cmp dword ptr (_up+28)[ebx*4],0
je L15
lea edi,[esi][edi]
cmp dword ptr (_down)[edi*4],0
je L15
mov edi,dword ptr (-4)[ebp]
mov esi,dword ptr (20)[ebp]
lea ebx,[esi][edi]
mov dword ptr (_down)[ebx*4],0
mov ebx,edi
sub ebx,esi
mov dword ptr (_up+28)[ebx*4],0
mov dword ptr (_rows)[edi*4],0
mov edi,dword ptr (20)[ebp]
mov esi,dword ptr (-4)[ebp]
mov dword ptr (_x)[edi*4],esi
cmp dword ptr (20)[ebp],7
jne L19
call _print
add esp,0
jmp L20
L19:
mov edi,dword ptr (20)[ebp]
lea edi,(1)[edi]
push edi
call _queens
add esp,4
L20:
mov edi,dword ptr (-4)[ebp]
mov esi,dword ptr (20)[ebp]
lea ebx,[esi][edi]
mov dword ptr (_down)[ebx*4],1
mov ebx,edi
sub ebx,esi
mov dword ptr (_up+28)[ebx*4],1
mov dword ptr (_rows)[edi*4],1
L15:
L12:
inc dword ptr (-4)[ebp]
cmp dword ptr (-4)[ebp],8
jl L11
mov eax,0
L10:
mov esp,ebp
pop ebp
pop edi
pop esi
pop ebx
ret
public _print
_print:
push ebx
push esi
push edi
push ebp
mov ebp,esp
sub esp,4
mov dword ptr (-4)[ebp],0
L23:
mov edi,dword ptr (-4)[ebp]
mov edi,dword ptr (_x)[edi*4]
lea edi,(49)[edi]
push edi
lea edi,(L27)
push edi
call _printf
add esp,8
L24:
inc dword ptr (-4)[ebp]
cmp dword ptr (-4)[ebp],8
jl L23
lea edi,(L28)
push edi
call _printf
add esp,4
mov eax,0
L22:
mov esp,ebp
pop ebp
pop edi
pop esi
pop ebx
ret
_TEXT ends
extrn _printf:near
_TEXT segment
_TEXT ends
_DATA segment
public _x
align 4
_x label byte
db 32 dup (0)
public _rows
align 4
_rows label byte
db 32 dup (0)
public _down
align 4
_down label byte
db 60 dup (0)
public _up
align 4
_up label byte
db 60 dup (0)
_DATA ends
_TEXT segment
align 1
L28 label byte
db 10
db 0
align 1
L27 label byte
db 37
db 99
db 32
db 0
_TEXT ends
end

View file

@ -0,0 +1,4 @@
0 1 2 3 1000 1001 1002 1003 2000 2001 2002 2003
0 1 2 3 1000 1001 1002 1003 2000 2001 2002 2003
0 1 2 3 1000 1001 1002 1003 2000 2001 2002 2003
0 1 2 3 1000 1001 1002 1003 2000 2001 2002 2003

View file

@ -0,0 +1,2 @@
tst/array.c:33: warning: missing return value
tst/array.c:48: warning: missing return value

View file

@ -0,0 +1,240 @@
.486
.model flat
extrn __fltused:near
extrn __ftol:near
public _main
_TEXT segment
_main:
push ebx
push esi
push edi
push ebp
mov ebp,esp
sub esp,60
mov dword ptr (-8)[ebp],0
L2:
mov dword ptr (-4)[ebp],0
L6:
mov edi,dword ptr (-4)[ebp]
mov esi,dword ptr (-8)[ebp]
mov ebx,esi
sal ebx,4
imul esi,esi,1000
lea esi,[edi][esi]
mov dword ptr (_x)[ebx][edi*4],esi
L7:
inc dword ptr (-4)[ebp]
cmp dword ptr (-4)[ebp],4
jl L6
mov edi,dword ptr (-8)[ebp]
mov esi,edi
sal esi,4
lea esi,(_x)[esi]
mov dword ptr (_y)[edi*4],esi
L3:
inc dword ptr (-8)[ebp]
cmp dword ptr (-8)[ebp],3
jl L2
call _f
add esp,0
mov dword ptr (-8)[ebp],0
L10:
mov edi,dword ptr (-8)[ebp]
mov esi,edi
sal esi,4
lea esi,(-60)[ebp][esi]
mov dword ptr (-12)[ebp],esi
mov dword ptr (_y)[edi*4],esi
mov dword ptr (-4)[ebp],0
L14:
mov edi,dword ptr (-4)[ebp]
lea edi,[edi*4]
mov esi,dword ptr (-12)[ebp]
mov ebx,dword ptr (-8)[ebp]
sal ebx,4
mov ebx,dword ptr (_x)[ebx][edi]
mov dword ptr [esi][edi],ebx
L15:
inc dword ptr (-4)[ebp]
cmp dword ptr (-4)[ebp],4
jl L14
L11:
inc dword ptr (-8)[ebp]
cmp dword ptr (-8)[ebp],3
jl L10
lea edi,(_y)
push edi
lea edi,(-60)[ebp]
push edi
call _g
add esp,8
mov eax,0
L1:
mov esp,ebp
pop ebp
pop edi
pop esi
pop ebx
ret
public _f
_f:
push ebx
push esi
push edi
push ebp
mov ebp,esp
sub esp,8
mov dword ptr (-8)[ebp],0
L19:
mov dword ptr (-4)[ebp],0
L23:
mov edi,dword ptr (-4)[ebp]
mov esi,dword ptr (-8)[ebp]
sal esi,4
mov edi,dword ptr (_x)[esi][edi*4]
push edi
lea edi,(L27)
push edi
call _printf
add esp,8
L24:
inc dword ptr (-4)[ebp]
cmp dword ptr (-4)[ebp],4
jl L23
L20:
inc dword ptr (-8)[ebp]
cmp dword ptr (-8)[ebp],3
jl L19
lea edi,(L28)
push edi
call _printf
add esp,4
mov dword ptr (-8)[ebp],0
L29:
mov dword ptr (-4)[ebp],0
L33:
mov edi,dword ptr (-4)[ebp]
mov esi,dword ptr (-8)[ebp]
mov esi,dword ptr (_y)[esi*4]
mov edi,dword ptr [esi][edi*4]
push edi
lea edi,(L27)
push edi
call _printf
add esp,8
L34:
inc dword ptr (-4)[ebp]
cmp dword ptr (-4)[ebp],4
jl L33
L30:
inc dword ptr (-8)[ebp]
cmp dword ptr (-8)[ebp],3
jl L29
lea edi,(L28)
push edi
call _printf
add esp,4
mov eax,0
L18:
mov esp,ebp
pop ebp
pop edi
pop esi
pop ebx
ret
public _g
_g:
push ebx
push esi
push edi
push ebp
mov ebp,esp
sub esp,8
mov dword ptr (-8)[ebp],0
L38:
mov dword ptr (-4)[ebp],0
L42:
mov edi,dword ptr (-4)[ebp]
mov esi,dword ptr (-8)[ebp]
sal esi,4
mov ebx,dword ptr (20)[ebp]
lea esi,[ebx][esi]
mov edi,dword ptr [esi][edi*4]
push edi
lea edi,(L27)
push edi
call _printf
add esp,8
L43:
inc dword ptr (-4)[ebp]
cmp dword ptr (-4)[ebp],4
jl L42
L39:
inc dword ptr (-8)[ebp]
cmp dword ptr (-8)[ebp],3
jl L38
lea edi,(L28)
push edi
call _printf
add esp,4
mov dword ptr (-8)[ebp],0
L46:
mov dword ptr (-4)[ebp],0
L50:
mov edi,dword ptr (-4)[ebp]
mov esi,dword ptr (-8)[ebp]
mov ebx,dword ptr (24)[ebp]
mov esi,dword ptr [ebx][esi*4]
mov edi,dword ptr [esi][edi*4]
push edi
lea edi,(L27)
push edi
call _printf
add esp,8
L51:
inc dword ptr (-4)[ebp]
cmp dword ptr (-4)[ebp],4
jl L50
L47:
inc dword ptr (-8)[ebp]
cmp dword ptr (-8)[ebp],3
jl L46
lea edi,(L28)
push edi
call _printf
add esp,4
mov eax,0
L37:
mov esp,ebp
pop ebp
pop edi
pop esi
pop ebx
ret
_TEXT ends
extrn _printf:near
_TEXT segment
_TEXT ends
_DATA segment
public _y
align 4
_y label byte
db 12 dup (0)
public _x
align 4
_x label byte
db 48 dup (0)
_DATA ends
_TEXT segment
align 1
L28 label byte
db 10
db 0
align 1
L27 label byte
db 32
db 37
db 100
db 0
_TEXT ends
end

View file

@ -0,0 +1,51 @@
char freq
011 8.1
012 6.1
040 11.9
! 0.2
" 1.5
% 0.6
& 0.4
' 0.4
( 2.9
) 2.9
* 0.8
+ 1.3
, 1.3
- 0.4
. 0.6
/ 1.0
0 2.5
1 1.9
2 0.6
3 0.2
7 0.4
8 0.2
; 3.8
< 0.8
= 2.7
> 0.2
[ 1.5
\ 0.8
] 1.5
a 3.1
c 4.4
e 2.3
f 6.0
g 1.3
h 1.0
i 5.0
l 1.0
m 0.2
n 3.3
o 2.1
p 1.0
q 0.4
r 4.2
s 0.6
t 3.8
u 1.2
v 0.6
w 0.2
{ 0.6
} 0.6

View file

View file

@ -0,0 +1,185 @@
.486
.model flat
extrn __fltused:near
extrn __ftol:near
public _main
_TEXT segment
_main:
push ebx
push esi
push edi
push ebp
mov ebp,esp
sub esp,24
cmp dword ptr (20)[ebp],1
jg L2
fld dword ptr (L4)
fstp dword ptr (-16)[ebp]
jmp L3
L2:
mov edi,dword ptr (24)[ebp]
mov edi,dword ptr (4)[edi]
push edi
call _atof
add esp,4
fstp dword ptr (-20)[ebp]
fld dword ptr (-20)[ebp]
fdiv dword ptr (L5)
fstp dword ptr (-16)[ebp]
L3:
mov dword ptr (-4)[ebp],0
L6:
mov edi,dword ptr (-4)[ebp]
lea esi,(1)[edi]
mov dword ptr (-4)[ebp],esi
fld dword ptr (L4)
fstp dword ptr (_f)[edi*4]
L7:
cmp dword ptr (-4)[ebp],127
jle L6
mov dword ptr (-8)[ebp],0
jmp L11
L10:
mov edi,dword ptr (-12)[ebp]
lea edi,(_f)[edi*4]
fld dword ptr [edi]
fadd dword ptr (L13)
fstp dword ptr [edi]
inc dword ptr (-8)[ebp]
L11:
call _getchar
add esp,0
mov dword ptr (-12)[ebp],eax
cmp eax,-1
jne L10
lea edi,(L14)
push edi
call _printf
add esp,4
mov dword ptr (-4)[ebp],0
L15:
mov edi,dword ptr (-4)[ebp]
fld dword ptr (_f)[edi*4]
fstp dword ptr (-24)[ebp]
fld dword ptr (L4)
fcomp dword ptr (-24)[ebp]
fstsw ax
sahf
je L19
fld dword ptr (-24)[ebp]
mov edi,dword ptr (-8)[ebp]
push edi
fild dword ptr 0[esp]
add esp,4
fdivp st(1),st
fld dword ptr (-16)[ebp]
fcompp
fstsw ax
sahf
ja L19
cmp dword ptr (-4)[ebp],32
jg L21
mov edi,dword ptr (-4)[ebp]
push edi
lea edi,(L23)
push edi
call _printf
add esp,8
jmp L22
L21:
mov edi,dword ptr (-4)[ebp]
push edi
lea edi,(L24)
push edi
call _printf
add esp,8
L22:
fld dword ptr (L5)
mov edi,dword ptr (-4)[ebp]
fmul dword ptr (_f)[edi*4]
mov edi,dword ptr (-8)[ebp]
push edi
fild dword ptr 0[esp]
add esp,4
fdivp st(1),st
sub esp,8
fstp qword ptr [esp]
lea edi,(L25)
push edi
call _printf
add esp,12
L19:
L16:
inc dword ptr (-4)[ebp]
cmp dword ptr (-4)[ebp],127
jle L15
mov eax,0
L1:
mov esp,ebp
pop ebp
pop edi
pop esi
pop ebx
ret
_TEXT ends
extrn _printf:near
_TEXT segment
_TEXT ends
extrn _getchar:near
_TEXT segment
_TEXT ends
extrn _atof:near
_TEXT segment
_TEXT ends
_DATA segment
public _f
align 4
_f label byte
db 512 dup (0)
_DATA ends
_TEXT segment
align 1
L25 label byte
db 9
db 37
db 46
db 49
db 102
db 10
db 0
align 1
L24 label byte
db 37
db 99
db 0
align 1
L23 label byte
db 37
db 48
db 51
db 111
db 0
align 1
L14 label byte
db 99
db 104
db 97
db 114
db 9
db 102
db 114
db 101
db 113
db 10
db 0
align 4
L13 label byte
dd 03f800000H
align 4
L5 label byte
dd 042c80000H
align 4
L4 label byte
dd 00H
_TEXT ends
end

View file

@ -0,0 +1,48 @@
Section s22 returned 0.
Decimal and octal/hex constants sometimes give
different results when assigned to longs.
Decimal and octal/hex constants sometimes give
different results when assigned to longs.
Section s241 returned 0.
Section s243 returned 0.
Section s244 returned 0.
Section s25 returned 0.
8 bits in chars.
32 bits in ints.
16 bits in shorts.
32 bits in longs.
32 bits in unsigneds.
32 bits in floats.
64 bits in doubles.
1.192093e-007 is the least number that can be added to 1. (float).
2.220446e-016 is the least number that can be added to 1. (double).
Section s26 returned 0.
Section s4 returned 0.
Section s61 returned 0.
Section s626 returned 0.
Section s71 returned 0.
Section s72 returned 0.
Section s757 returned 0.
Section s7813 returned 0.
Section s714 returned 0.
Section s715 returned 0.
Register count for char is unreliable.
Register count for pointer is unreliable.
Register count for int is unreliable.
Section s81 returned 0.
Section s84 returned 0.
char alignment: 1
short alignment: 2
int alignment: 4
long alignment: 4
unsigned alignment: 4
float alignment: 4
double alignment: 4
Sign extension in fields
Be especially careful with 1-bit fields!
Section s85 returned 0.
Section s86 returned 0.
Section s88 returned 0.
Section s9 returned 0.
No errors detected.

View file

@ -0,0 +1,25 @@
tst/cq.c:394: warning: overflow in converting constant expression from `unsigned long' to `long int'
tst/cq.c:394: warning: overflow in converting constant expression from `unsigned long' to `long int'
tst/cq.c:394: warning: overflow in converting constant expression from `unsigned long' to `long int'
tst/cq.c:395: warning: overflow in constant `4294967296'
tst/cq.c:395: warning: overflow in converting constant expression from `unsigned long' to `long int'
tst/cq.c:395: warning: overflow in constant `040000000000'
tst/cq.c:395: warning: overflow in converting constant expression from `unsigned long' to `long int'
tst/cq.c:395: warning: overflow in constant `0x100000000'
tst/cq.c:395: warning: overflow in converting constant expression from `unsigned long' to `long int'
tst/cq.c:396: warning: overflow in constant `68719476735'
tst/cq.c:396: warning: overflow in converting constant expression from `unsigned long' to `long int'
tst/cq.c:396: warning: overflow in constant `0777777777777'
tst/cq.c:396: warning: overflow in converting constant expression from `unsigned long' to `long int'
tst/cq.c:396: warning: overflow in constant `0xfffffffff'
tst/cq.c:396: warning: overflow in converting constant expression from `unsigned long' to `long int'
tst/cq.c:397: warning: overflow in constant `68719476736'
tst/cq.c:397: warning: overflow in converting constant expression from `unsigned long' to `long int'
tst/cq.c:397: warning: overflow in constant `01000000000000'
tst/cq.c:397: warning: overflow in converting constant expression from `unsigned long' to `long int'
tst/cq.c:397: warning: overflow in constant `0x1000000000'
tst/cq.c:397: warning: overflow in converting constant expression from `unsigned long' to `long int'
tst/cq.c:533: warning: missing return value
tst/cq.c:1169: warning: missing return value
tst/cq.c:5294: warning: unreachable code
tst/cq.c:5303: warning: missing return value

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,11 @@
1 1 1 1 1 1 1 1 1.000000 1.000000 1.000000
2 2 2 2 2 2 2 2 2.000000 2.000000 2.000000
3 3 3 3 3 3 3 3 3.000000 3.000000 3.000000
4 4 4 4 4 4 4 4 4.000000 4.000000 4.000000
5 5 5 5 5 5 5 5 5.000000 5.000000 5.000000
6 6 6 6 6 6 6 6 6.000000 6.000000 6.000000
7 7 7 7 7 7 7 7 7.000000 7.000000 7.000000
8 8 8 8 8 8 8 8 8.000000 8.000000 8.000000
9 9 9 9 9 9 9 9 9.000000 9.000000 9.000000
10 10 10 10 10 10 10 10 10.000000 10.000000 10.000000
11 11 11 11 11 11 11 11 11.000000 11.000000 11.000000

View file

@ -0,0 +1,2 @@
tst/cvt.c:32: warning: conversion from `pointer to void function(void)' to `pointer to void' is compiler dependent
tst/cvt.c:33: warning: conversion from `pointer to void' to `pointer to void function(void)' is compiler dependent

View file

@ -0,0 +1,742 @@
.486
.model flat
extrn __fltused:near
extrn __ftol:near
public _print
_TEXT segment
_print:
push ebx
push esi
push edi
push ebp
mov ebp,esp
fld qword ptr (_D)
sub esp,8
fstp qword ptr [esp]
fld qword ptr (_d)
sub esp,8
fstp qword ptr [esp]
fld dword ptr (_f)
sub esp,8
fstp qword ptr [esp]
mov edi,dword ptr (_L)
push edi
mov edi,dword ptr (_I)
push edi
mov di,word ptr (_S)
movzx edi,di
push edi
mov bl,byte ptr (_C)
movzx edi,bl
push edi
mov edi,dword ptr (_l)
push edi
mov edi,dword ptr (_i)
push edi
movsx edi,word ptr (_s)
push edi
movsx edi,byte ptr (_c)
push edi
lea edi,(L2)
push edi
call _printf
add esp,60
L1:
mov esp,ebp
pop ebp
pop edi
pop esi
pop ebx
ret
public _main
_main:
push ebx
push esi
push edi
push ebp
mov ebp,esp
sub esp,296
mov byte ptr (_c),1
movsx edi,byte ptr (_c)
mov esi,edi
mov word ptr (_s),si
mov dword ptr (_i),edi
mov dword ptr (_l),edi
mov esi,edi
mov ebx,esi
mov byte ptr (_C),bl
mov ebx,esi
mov word ptr (_S),bx
mov dword ptr (_I),esi
mov dword ptr (_L),esi
push edi
fild dword ptr 0[esp]
add esp,4
fstp dword ptr (_f)
push edi
fild dword ptr 0[esp]
add esp,4
fstp qword ptr (-8)[ebp]
fld qword ptr (-8)[ebp]
fstp qword ptr (_d)
fld qword ptr (-8)[ebp]
fstp qword ptr (_D)
call _print
add esp,0
mov word ptr (_s),2
movsx edi,word ptr (_s)
mov ebx,edi
mov byte ptr (_c),bl
mov dword ptr (_i),edi
mov dword ptr (_l),edi
mov esi,edi
mov ebx,esi
mov byte ptr (_C),bl
mov ebx,esi
mov word ptr (_S),bx
mov dword ptr (_I),esi
mov dword ptr (_L),esi
push edi
fild dword ptr 0[esp]
add esp,4
fstp dword ptr (_f)
push edi
fild dword ptr 0[esp]
add esp,4
fstp qword ptr (-16)[ebp]
fld qword ptr (-16)[ebp]
fstp qword ptr (_d)
fld qword ptr (-16)[ebp]
fstp qword ptr (_D)
call _print
add esp,0
mov dword ptr (_i),3
mov edi,dword ptr (_i)
mov ebx,edi
mov byte ptr (_c),bl
mov esi,edi
mov word ptr (_s),si
mov dword ptr (_l),edi
mov esi,edi
mov ebx,esi
mov byte ptr (_C),bl
mov ebx,esi
mov word ptr (_S),bx
mov dword ptr (_I),esi
mov dword ptr (_L),esi
push edi
fild dword ptr 0[esp]
add esp,4
fstp dword ptr (_f)
push edi
fild dword ptr 0[esp]
add esp,4
fstp qword ptr (-24)[ebp]
fld qword ptr (-24)[ebp]
fstp qword ptr (_d)
fld qword ptr (-24)[ebp]
fstp qword ptr (_D)
call _print
add esp,0
mov dword ptr (_l),4
mov edi,dword ptr (_l)
mov ebx,edi
mov byte ptr (_c),bl
mov esi,edi
mov word ptr (_s),si
mov dword ptr (_i),edi
mov esi,edi
mov ebx,esi
mov byte ptr (_C),bl
mov ebx,esi
mov word ptr (_S),bx
mov dword ptr (_I),esi
mov dword ptr (_L),esi
push edi
fild dword ptr 0[esp]
add esp,4
fstp dword ptr (_f)
push edi
fild dword ptr 0[esp]
add esp,4
fstp qword ptr (-32)[ebp]
fld qword ptr (-32)[ebp]
fstp qword ptr (_d)
fld qword ptr (-32)[ebp]
fstp qword ptr (_D)
call _print
add esp,0
mov byte ptr (_C),5
mov bl,byte ptr (_C)
movzx edi,bl
mov ebx,edi
mov byte ptr (_c),bl
mov esi,edi
mov word ptr (_s),si
mov dword ptr (_i),edi
mov dword ptr (_l),edi
mov esi,edi
mov ebx,esi
mov word ptr (_S),bx
mov dword ptr (_I),esi
mov dword ptr (_L),esi
push edi
fild dword ptr 0[esp]
add esp,4
fstp dword ptr (_f)
push edi
fild dword ptr 0[esp]
add esp,4
fstp qword ptr (-40)[ebp]
fld qword ptr (-40)[ebp]
fstp qword ptr (_d)
fld qword ptr (-40)[ebp]
fstp qword ptr (_D)
call _print
add esp,0
mov word ptr (_S),6
mov di,word ptr (_S)
movzx edi,di
mov ebx,edi
mov byte ptr (_c),bl
mov esi,edi
mov word ptr (_s),si
mov dword ptr (_i),edi
mov dword ptr (_l),edi
mov esi,edi
mov ebx,esi
mov byte ptr (_C),bl
mov dword ptr (_I),esi
mov dword ptr (_L),esi
push edi
fild dword ptr 0[esp]
add esp,4
fstp dword ptr (_f)
push edi
fild dword ptr 0[esp]
add esp,4
fstp qword ptr (-48)[ebp]
fld qword ptr (-48)[ebp]
fstp qword ptr (_d)
fld qword ptr (-48)[ebp]
fstp qword ptr (_D)
call _print
add esp,0
mov dword ptr (_I),7
mov edi,dword ptr (_I)
mov ebx,edi
mov byte ptr (_c),bl
mov ebx,edi
mov word ptr (_s),bx
mov dword ptr (_i),edi
mov dword ptr (_l),edi
mov ebx,edi
mov byte ptr (_C),bl
mov esi,edi
mov word ptr (_S),si
mov dword ptr (_L),edi
fld qword ptr (L4)
mov esi,edi
shr esi,1
push esi
fild dword ptr 0[esp]
add esp,4
fmulp st(1),st
and edi,1
push edi
fild dword ptr 0[esp]
add esp,4
faddp st(1),st
fstp qword ptr (-56)[ebp]
fld qword ptr (-56)[ebp]
fstp dword ptr (_f)
fld qword ptr (-56)[ebp]
fstp qword ptr (_d)
fld qword ptr (-56)[ebp]
fstp qword ptr (_D)
call _print
add esp,0
mov dword ptr (_L),8
mov edi,dword ptr (_L)
mov ebx,edi
mov byte ptr (_c),bl
mov ebx,edi
mov word ptr (_s),bx
mov dword ptr (_i),edi
mov dword ptr (_l),edi
mov ebx,edi
mov byte ptr (_C),bl
mov esi,edi
mov word ptr (_S),si
mov si,word ptr (_S)
movzx esi,si
mov dword ptr (_I),esi
fld qword ptr (L4)
mov esi,edi
shr esi,1
push esi
fild dword ptr 0[esp]
add esp,4
fmulp st(1),st
and edi,1
push edi
fild dword ptr 0[esp]
add esp,4
faddp st(1),st
fstp qword ptr (-64)[ebp]
fld qword ptr (-64)[ebp]
fstp dword ptr (_f)
fld qword ptr (-64)[ebp]
fstp qword ptr (_d)
fld qword ptr (-64)[ebp]
fstp qword ptr (_D)
call _print
add esp,0
fld dword ptr (L5)
fstp dword ptr (_f)
fld dword ptr (_f)
fstp dword ptr (-84)[ebp]
fld dword ptr (-84)[ebp]
call __ftol
mov edi,eax
mov ebx,edi
mov byte ptr (_c),bl
mov esi,edi
mov word ptr (_s),si
mov dword ptr (_i),edi
mov dword ptr (_l),edi
fld dword ptr (L9)
fcomp dword ptr (-84)[ebp]
fstsw ax
sahf
ja L7
fld dword ptr (-84)[ebp]
fsub dword ptr (L9)
call __ftol
mov edi,eax
lea edi,(080000000H)[edi]
mov dword ptr (-68)[ebp],edi
jmp L8
L7:
fld dword ptr (-84)[ebp]
call __ftol
mov edi,eax
mov dword ptr (-68)[ebp],edi
L8:
mov edi,dword ptr (-68)[ebp]
mov ebx,edi
mov byte ptr (_C),bl
fld dword ptr (L9)
fcomp dword ptr (_f)
fstsw ax
sahf
ja L11
fld dword ptr (_f)
fsub dword ptr (L9)
call __ftol
mov edi,eax
lea edi,(080000000H)[edi]
mov dword ptr (-72)[ebp],edi
jmp L12
L11:
fld dword ptr (_f)
call __ftol
mov edi,eax
mov dword ptr (-72)[ebp],edi
L12:
mov edi,dword ptr (-72)[ebp]
mov word ptr (_S),di
fld dword ptr (L9)
fcomp dword ptr (_f)
fstsw ax
sahf
ja L14
fld dword ptr (_f)
fsub dword ptr (L9)
call __ftol
mov edi,eax
lea edi,(080000000H)[edi]
mov dword ptr (-76)[ebp],edi
jmp L15
L14:
fld dword ptr (_f)
call __ftol
mov edi,eax
mov dword ptr (-76)[ebp],edi
L15:
mov edi,dword ptr (-76)[ebp]
mov dword ptr (_I),edi
fld dword ptr (L9)
fcomp dword ptr (_f)
fstsw ax
sahf
ja L17
fld dword ptr (_f)
fsub dword ptr (L9)
call __ftol
mov edi,eax
lea edi,(080000000H)[edi]
mov dword ptr (-80)[ebp],edi
jmp L18
L17:
fld dword ptr (_f)
call __ftol
mov edi,eax
mov dword ptr (-80)[ebp],edi
L18:
mov edi,dword ptr (-80)[ebp]
mov dword ptr (_L),edi
fld dword ptr (_f)
fstp qword ptr (-120)[ebp]
fld qword ptr (-120)[ebp]
fstp qword ptr (_d)
fld qword ptr (-120)[ebp]
fstp qword ptr (_D)
call _print
add esp,0
fld qword ptr (L19)
fstp qword ptr (_d)
fld qword ptr (_d)
fstp qword ptr (-144)[ebp]
fld qword ptr (-144)[ebp]
call __ftol
mov edi,eax
mov ebx,edi
mov byte ptr (_c),bl
mov esi,edi
mov word ptr (_s),si
mov dword ptr (_i),edi
mov dword ptr (_l),edi
fld qword ptr (L23)
fcomp qword ptr (-144)[ebp]
fstsw ax
sahf
ja L21
fld qword ptr (-144)[ebp]
fsub qword ptr (L23)
call __ftol
mov edi,eax
lea edi,(080000000H)[edi]
mov dword ptr (-124)[ebp],edi
jmp L22
L21:
fld qword ptr (-144)[ebp]
call __ftol
mov edi,eax
mov dword ptr (-124)[ebp],edi
L22:
mov edi,dword ptr (-124)[ebp]
mov ebx,edi
mov byte ptr (_C),bl
fld qword ptr (L23)
fcomp qword ptr (_d)
fstsw ax
sahf
ja L25
fld qword ptr (_d)
fsub qword ptr (L23)
call __ftol
mov edi,eax
lea edi,(080000000H)[edi]
mov dword ptr (-128)[ebp],edi
jmp L26
L25:
fld qword ptr (_d)
call __ftol
mov edi,eax
mov dword ptr (-128)[ebp],edi
L26:
mov edi,dword ptr (-128)[ebp]
mov word ptr (_S),di
fld qword ptr (L23)
fcomp qword ptr (_d)
fstsw ax
sahf
ja L28
fld qword ptr (_d)
fsub qword ptr (L23)
call __ftol
mov edi,eax
lea edi,(080000000H)[edi]
mov dword ptr (-132)[ebp],edi
jmp L29
L28:
fld qword ptr (_d)
call __ftol
mov edi,eax
mov dword ptr (-132)[ebp],edi
L29:
mov edi,dword ptr (-132)[ebp]
mov dword ptr (_I),edi
fld qword ptr (L23)
fcomp qword ptr (_d)
fstsw ax
sahf
ja L31
fld qword ptr (_d)
fsub qword ptr (L23)
call __ftol
mov edi,eax
lea edi,(080000000H)[edi]
mov dword ptr (-136)[ebp],edi
jmp L32
L31:
fld qword ptr (_d)
call __ftol
mov edi,eax
mov dword ptr (-136)[ebp],edi
L32:
mov edi,dword ptr (-136)[ebp]
mov dword ptr (_L),edi
fld qword ptr (_d)
fstp dword ptr (_f)
fld qword ptr (_d)
fstp qword ptr (_D)
call _print
add esp,0
fld qword ptr (L33)
fstp qword ptr (_D)
fld qword ptr (_D)
fstp qword ptr (-232)[ebp]
fld qword ptr (-232)[ebp]
call __ftol
mov edi,eax
mov ebx,edi
mov byte ptr (_c),bl
mov esi,edi
mov word ptr (_s),si
mov dword ptr (_i),edi
mov dword ptr (_l),edi
fld qword ptr (L37)
fcomp qword ptr (-232)[ebp]
fstsw ax
sahf
ja L35
fld qword ptr (-232)[ebp]
fsub qword ptr (L37)
call __ftol
mov edi,eax
lea edi,(080000000H)[edi]
mov dword ptr (-212)[ebp],edi
jmp L36
L35:
fld qword ptr (-232)[ebp]
call __ftol
mov edi,eax
mov dword ptr (-212)[ebp],edi
L36:
mov edi,dword ptr (-212)[ebp]
mov ebx,edi
mov byte ptr (_C),bl
fld qword ptr (L37)
fcomp qword ptr (_D)
fstsw ax
sahf
ja L39
fld qword ptr (_D)
fsub qword ptr (L37)
call __ftol
mov edi,eax
lea edi,(080000000H)[edi]
mov dword ptr (-216)[ebp],edi
jmp L40
L39:
fld qword ptr (_D)
call __ftol
mov edi,eax
mov dword ptr (-216)[ebp],edi
L40:
mov edi,dword ptr (-216)[ebp]
mov word ptr (_S),di
fld qword ptr (L37)
fcomp qword ptr (_D)
fstsw ax
sahf
ja L42
fld qword ptr (_D)
fsub qword ptr (L37)
call __ftol
mov edi,eax
lea edi,(080000000H)[edi]
mov dword ptr (-220)[ebp],edi
jmp L43
L42:
fld qword ptr (_D)
call __ftol
mov edi,eax
mov dword ptr (-220)[ebp],edi
L43:
mov edi,dword ptr (-220)[ebp]
mov dword ptr (_I),edi
fld qword ptr (L37)
fcomp qword ptr (_D)
fstsw ax
sahf
ja L45
fld qword ptr (_D)
fsub qword ptr (L37)
call __ftol
mov edi,eax
lea edi,(080000000H)[edi]
mov dword ptr (-224)[ebp],edi
jmp L46
L45:
fld qword ptr (_D)
call __ftol
mov edi,eax
mov dword ptr (-224)[ebp],edi
L46:
mov edi,dword ptr (-224)[ebp]
mov dword ptr (_L),edi
fld qword ptr (_D)
fstp dword ptr (_f)
fld qword ptr (_D)
fstp qword ptr (_d)
call _print
add esp,0
mov dword ptr (_p),0
mov dword ptr (_p),0
mov dword ptr (_p),0
mov dword ptr (_p),0
mov edi,dword ptr (_P)
mov dword ptr (_p),edi
mov dword ptr (_P),0
mov dword ptr (_P),0
mov dword ptr (_P),0
mov dword ptr (_P),0
mov edi,dword ptr (_p)
mov dword ptr (_P),edi
mov eax,0
L3:
mov esp,ebp
pop ebp
pop edi
pop esi
pop ebx
ret
_TEXT ends
extrn _printf:near
_TEXT segment
_TEXT ends
_DATA segment
public _P
align 4
_P label byte
db 4 dup (0)
public _p
align 4
_p label byte
db 4 dup (0)
public _D
align 4
_D label byte
db 8 dup (0)
public _d
align 4
_d label byte
db 8 dup (0)
public _f
align 4
_f label byte
db 4 dup (0)
public _L
align 4
_L label byte
db 4 dup (0)
public _I
align 4
_I label byte
db 4 dup (0)
public _S
align 2
_S label byte
db 2 dup (0)
public _C
align 1
_C label byte
db 1 dup (0)
public _l
align 4
_l label byte
db 4 dup (0)
public _i
align 4
_i label byte
db 4 dup (0)
public _s
align 2
_s label byte
db 2 dup (0)
public _c
align 1
_c label byte
db 1 dup (0)
_DATA ends
_TEXT segment
align 4
L37 label byte
dd 00H
dd 041e00000H
align 4
L33 label byte
dd 00H
dd 040260000H
align 4
L23 label byte
dd 00H
dd 041e00000H
align 4
L19 label byte
dd 00H
dd 040240000H
align 4
L9 label byte
dd 04f000000H
align 4
L5 label byte
dd 041100000H
align 4
L4 label byte
dd 00H
dd 040000000H
align 1
L2 label byte
db 37
db 100
db 32
db 37
db 100
db 32
db 37
db 100
db 32
db 37
db 108
db 100
db 32
db 37
db 117
db 32
db 37
db 117
db 32
db 37
db 117
db 32
db 37
db 108
db 117
db 32
db 37
db 102
db 32
db 37
db 102
db 32
db 37
db 108
db 102
db 10
db 0
_TEXT ends
end

View file

@ -0,0 +1,5 @@
x = 1 2 3 4 -3 6
y = 3 8 9
x = 1 2 3 0 0 6
y = 2 8 16
p->a = 0x3, p->b = 0xf

View file

@ -0,0 +1,4 @@
tst/fields.c:6: warning: initializer exceeds bit-field width
tst/fields.c:8: warning: initializer exceeds bit-field width
tst/fields.c:30: warning: missing return value
tst/fields.c:34: warning: missing return value

View file

@ -0,0 +1,323 @@
.486
.model flat
extrn __fltused:near
extrn __ftol:near
_DATA segment
public _x
align 4
_x label byte
dd 1
db 2
db 3 dup (0)
db 03H
db 040H
db 2 dup (0)
db 050H
db 6
db 2 dup (0)
public _i
align 4
_i label byte
dd 16
public _y
align 4
_y label byte
db 023H
db 3 dup (0)
db 09H
db 00H
db 00H
db 00H
public _main
_DATA ends
_TEXT segment
_main:
push ebx
push esi
push edi
push ebp
mov ebp,esp
movsx edi,byte ptr (_x+13)
push edi
mov edi,dword ptr (_x+12)
sal edi,25
sar edi,29
push edi
mov edi,dword ptr (_x+8)
sal edi,16
sar edi,28
push edi
mov edi,dword ptr (_x+8)
sal edi,20
sar edi,20
push edi
movsx edi,byte ptr (_x+4)
push edi
mov edi,dword ptr (_x)
push edi
lea edi,(L4)
push edi
call _printf
add esp,28
mov edi,dword ptr (_y+4)
push edi
mov edi,dword ptr (_y)
mov esi,edi
shr esi,2
and esi,15
push esi
and edi,3
push edi
lea edi,(L10)
push edi
call _printf
add esp,16
mov edi,dword ptr (_x+8)
and edi,0ffff0fffH
mov esi,dword ptr (_i)
sal esi,28
sar esi,28
shl esi,12
and esi,0f000H
or edi,esi
mov dword ptr (_x+8),edi
mov edi,dword ptr (_x+12)
and edi,0ffffff8fH
mov dword ptr (_x+12),edi
movsx edi,byte ptr (_x+13)
push edi
mov edi,dword ptr (_x+12)
sal edi,25
sar edi,29
push edi
mov edi,dword ptr (_x+8)
sal edi,16
sar edi,28
push edi
mov edi,dword ptr (_x+8)
sal edi,20
sar edi,20
push edi
movsx edi,byte ptr (_x+4)
push edi
mov edi,dword ptr (_x)
push edi
lea edi,(L4)
push edi
call _printf
add esp,28
mov edi,dword ptr (_y)
and edi,0fffffffcH
or edi,2
mov dword ptr (_y),edi
mov edi,dword ptr (_i)
mov dword ptr (_y+4),edi
mov edi,dword ptr (_y+4)
push edi
mov edi,dword ptr (_y)
mov esi,edi
shr esi,2
and esi,15
push esi
and edi,3
push edi
lea edi,(L10)
push edi
call _printf
add esp,16
lea edi,(_x)
push edi
call _f2
add esp,4
mov eax,0
L3:
mov esp,ebp
pop ebp
pop edi
pop esi
pop ebx
ret
public _f1
_f1:
push ebx
push esi
push edi
push ebp
mov ebp,esp
mov edi,dword ptr (20)[ebp]
and dword ptr [edi],0ffffffc3H
mov edi,dword ptr (20)[ebp]
mov esi,dword ptr [edi]
and esi,0fffffffcH
mov ebx,0
and ebx,3
and ebx,3
or esi,ebx
mov dword ptr [edi],esi
mov edi,dword ptr (20)[ebp]
mov edi,dword ptr [edi]
and edi,60
cmp edi,0
je L22
lea edi,(L24)
push edi
call _printf
add esp,4
L22:
mov edi,dword ptr (20)[ebp]
or dword ptr [edi],3
mov edi,dword ptr (20)[ebp]
or dword ptr [edi],60
mov edi,dword ptr (20)[ebp]
mov edi,dword ptr [edi]
mov esi,edi
shr esi,2
and esi,15
push esi
and edi,3
push edi
lea edi,(L25)
push edi
call _printf
add esp,12
mov eax,0
L21:
mov esp,ebp
pop ebp
pop edi
pop esi
pop ebx
ret
public _f2
_f2:
push ebx
push esi
push edi
push ebp
mov ebp,esp
sub esp,4
cmp dword ptr (_i),0
jne L28
mov dword ptr (-4)[ebp],1
jmp L29
L28:
mov dword ptr (-4)[ebp],0
L29:
mov edi,dword ptr (20)[ebp]
mov esi,dword ptr [edi]
and esi,0fffffffcH
mov ebx,dword ptr (-4)[ebp]
and ebx,3
and ebx,3
or esi,ebx
mov dword ptr [edi],esi
mov edi,dword ptr (20)[ebp]
push edi
call _f1
add esp,4
mov esi,dword ptr [edi]
and esi,0ffffffc3H
mov ebx,0
and ebx,15
lea ebx,[ebx*4]
and ebx,60
or esi,ebx
mov dword ptr [edi],esi
mov eax,0
L26:
mov esp,ebp
pop ebp
pop edi
pop esi
pop ebx
ret
_TEXT ends
extrn _printf:near
_TEXT segment
_TEXT ends
_TEXT segment
align 1
L25 label byte
db 112
db 45
db 62
db 97
db 32
db 61
db 32
db 48
db 120
db 37
db 120
db 44
db 32
db 112
db 45
db 62
db 98
db 32
db 61
db 32
db 48
db 120
db 37
db 120
db 10
db 0
align 1
L24 label byte
db 112
db 45
db 62
db 98
db 32
db 33
db 61
db 32
db 48
db 33
db 10
db 0
align 1
L10 label byte
db 121
db 32
db 61
db 32
db 37
db 100
db 32
db 37
db 100
db 32
db 37
db 100
db 10
db 0
align 1
L4 label byte
db 120
db 32
db 61
db 32
db 37
db 100
db 32
db 37
db 100
db 32
db 37
db 100
db 32
db 37
db 100
db 32
db 37
db 100
db 32
db 37
db 100
db 10
db 0
_TEXT ends
end

View file

@ -0,0 +1,29 @@
tst/front.c:3: warning: missing return value
tst/front.c:10: warning: missing return value
tst/front.c:20: type error in argument 1 to `s'; found `pointer to struct D' expected `pointer to incomplete struct D defined at tst/front.c:14'
tst/front.c:21: warning: missing return value
tst/front.c:32: warning: missing return value
tst/front.c:36: operands of = have illegal types `pointer to int' and `pointer to const int'
tst/front.c:38: warning: missing return value
tst/front.c:62: operands of = have illegal types `pointer to char' and `pointer to const void'
tst/front.c:63: warning: missing return value
tst/front.c:68: warning: missing return value
tst/front.c:69: warning: inconsistent linkage for `yy' previously declared at tst/front.c:68
tst/front.c:69: warning: missing return value
tst/front.c:71: invalid storage class `static' for `int function goo'
tst/front.c:71: warning: declaration of `goo' does not match previous declaration at tst/front.c:70
tst/front.c:71: warning: missing return value
tst/front.c:74: warning: declaration of `xr' does not match previous declaration at tst/front.c:72
tst/front.c:74: warning: missing return value
tst/front.c:81: warning: missing return value
tst/front.c:82: warning: declaration of `ss2' does not match previous declaration at tst/front.c:81
tst/front.c:84: warning: inconsistent linkage for `ss5' previously declared at tst/front.c:80
tst/front.c:92: type error in argument 1 to `gx1'; found `pointer to double' expected `double'
tst/front.c:92: warning: missing return value
tst/front.c:95: redeclaration of `hx1' previously declared at tst/front.c:94
tst/front.c:98: warning: missing return value
tst/front.c:101: conflicting argument declarations for function `gg1'
tst/front.c:101: warning: missing return value
tst/front.c:112: type error in argument 4 to `qsort'; found `pointer to int function(pointer to pointer to char,pointer to pointer to char)' expected `pointer to int function(pointer to const void,pointer to const void)'
tst/front.c:113: warning: missing return value
tst/front.c:120: warning: missing return value

View file

@ -0,0 +1,436 @@
.486
.model flat
extrn __fltused:near
extrn __ftol:near
public _main
_TEXT segment
_main:
push ebx
push esi
push edi
push ebp
mov ebp,esp
push 0
call _exit
add esp,4
mov eax,0
L1:
mov esp,ebp
pop ebp
pop edi
pop esi
pop ebx
ret
public _nested
_nested:
push ebx
push esi
push edi
push ebp
mov ebp,esp
cmp dword ptr (20)[ebp],4
jge L6
cmp dword ptr (24)[ebp],114
je L9
L6:
cmp dword ptr (20)[ebp],1
jne L8
mov edi,dword ptr (24)[ebp]
cmp edi,104
je L9
cmp edi,105
je L9
L8:
cmp dword ptr (20)[ebp],2
jne L3
mov edi,dword ptr (24)[ebp]
cmp edi,111
je L9
cmp edi,121
jne L3
L9:
mov edi,dword ptr (24)[ebp]
mov dword ptr (20)[ebp],edi
L3:
mov eax,0
L2:
mov esp,ebp
pop ebp
pop edi
pop esi
pop ebx
ret
public _s
_s:
push ebx
push esi
push edi
push ebp
mov ebp,esp
L10:
mov esp,ebp
pop ebp
pop edi
pop esi
pop ebx
ret
_TEXT ends
_DATA segment
public _Dy
align 4
_Dy label byte
dd 0
db 4 dup (0)
public _Dz
align 4
_Dz label byte
dd 1
db 4 dup (0)
public _Dfunc
_DATA ends
_TEXT segment
_Dfunc:
push ebx
push esi
push edi
push ebp
mov ebp,esp
mov esp,ebp
pop ebp
pop edi
pop esi
pop ebx
ret
public _f
_f:
push ebx
push esi
push edi
push ebp
mov ebp,esp
mov esp,ebp
pop ebp
pop edi
pop esi
pop ebx
ret
public _f1
_f1:
push ebx
push esi
push edi
push ebp
mov ebp,esp
mov esp,ebp
pop ebp
pop edi
pop esi
pop ebx
ret
public _f2
_f2:
push ebx
push esi
push edi
push ebp
mov ebp,esp
mov esp,ebp
pop ebp
pop edi
pop esi
pop ebx
ret
public _g
_g:
push ebx
push esi
push edi
push ebp
mov ebp,esp
mov esp,ebp
pop ebp
pop edi
pop esi
pop ebx
ret
public _h
_h:
push ebx
push esi
push edi
push ebp
mov ebp,esp
mov esp,ebp
pop ebp
pop edi
pop esi
pop ebx
ret
public _h1
_h1:
push ebx
push esi
push edi
push ebp
mov ebp,esp
mov esp,ebp
pop ebp
pop edi
pop esi
pop ebx
ret
public _h2
_h2:
push ebx
push esi
push edi
push ebp
mov ebp,esp
mov esp,ebp
pop ebp
pop edi
pop esi
pop ebx
ret
_TEXT ends
_DATA segment
align 4
L21 label byte
dd 1
public _set1
_DATA ends
_TEXT segment
_set1:
push ebx
push esi
push edi
push ebp
mov ebp,esp
mov esp,ebp
pop ebp
pop edi
pop esi
pop ebx
ret
_TEXT ends
_DATA segment
align 4
L23 label byte
dd 2
public _set2
_DATA ends
_TEXT segment
_set2:
push ebx
push esi
push edi
push ebp
mov ebp,esp
mov esp,ebp
pop ebp
pop edi
pop esi
pop ebx
ret
_goo:
push ebx
push esi
push edi
push ebp
mov ebp,esp
mov esp,ebp
pop ebp
pop edi
pop esi
pop ebx
ret
public _sss
_sss:
push ebx
push esi
push edi
push ebp
mov ebp,esp
mov esp,ebp
pop ebp
pop edi
pop esi
pop ebx
ret
_TEXT ends
_DATA segment
align 4
L27 label byte
db 4 dup (0)
public _rrr
_DATA ends
_TEXT segment
_rrr:
push ebx
push esi
push edi
push ebp
mov ebp,esp
mov esp,ebp
pop ebp
pop edi
pop esi
pop ebx
ret
public _setstatic
_setstatic:
push ebx
push esi
push edi
push ebp
mov ebp,esp
mov esp,ebp
pop ebp
pop edi
pop esi
pop ebx
ret
public _gx1
_gx1:
push ebx
push esi
push edi
push ebp
mov ebp,esp
mov esp,ebp
pop ebp
pop edi
pop esi
pop ebx
ret
public _ff1
_ff1:
push ebx
push esi
push edi
push ebp
mov ebp,esp
mov esp,ebp
pop ebp
pop edi
pop esi
pop ebx
ret
public _gg1
_gg1:
push ebx
push esi
push edi
push ebp
mov ebp,esp
mov esp,ebp
pop ebp
pop edi
pop esi
pop ebx
ret
public _hh1
_hh1:
push ebx
push esi
push edi
push ebp
mov ebp,esp
mov esp,ebp
pop ebp
pop edi
pop esi
pop ebx
ret
public _cmp
_cmp:
push ebx
push esi
push edi
push ebp
mov ebp,esp
mov esp,ebp
pop ebp
pop edi
pop esi
pop ebx
ret
public _sort
_sort:
push ebx
push esi
push edi
push ebp
mov ebp,esp
mov esp,ebp
pop ebp
pop edi
pop esi
pop ebx
ret
public _onearg
_onearg:
push ebx
push esi
push edi
push ebp
mov ebp,esp
mov esp,ebp
pop ebp
pop edi
pop esi
pop ebx
ret
_TEXT ends
extrn _exit:near
_TEXT segment
_TEXT ends
extrn _qsort:near
_TEXT segment
_TEXT ends
extrn _strcmp:near
_TEXT segment
_TEXT ends
_DATA segment
public _ss4
align 4
_ss4 label byte
db 4 dup (0)
align 4
_ss2 label byte
db 4 dup (0)
align 4
_ss5 label byte
db 4 dup (0)
public _ss3
align 4
_ss3 label byte
db 4 dup (0)
align 4
_ss1 label byte
db 4 dup (0)
align 4
_yy label byte
db 4 dup (0)
public _z
align 4
_z label byte
db 4 dup (0)
public _y
align 4
_y label byte
db 4 dup (0)
public _x
align 4
_x label byte
db 4 dup (0)
public _b
align 4
_b label byte
db 4 dup (0)
public _a
align 4
_a label byte
db 4 dup (0)
_DATA ends
end

View file

View file

@ -0,0 +1,9 @@
tst/incr.c:1: warning: missing return value
tst/incr.c:6: warning: expression with no effect elided
tst/incr.c:6: warning: expression with no effect elided
tst/incr.c:11: warning: missing return value
tst/incr.c:16: warning: expression with no effect elided
tst/incr.c:16: warning: expression with no effect elided
tst/incr.c:21: warning: missing return value
tst/incr.c:30: warning: missing return value
tst/incr.c:39: warning: missing return value

View file

@ -0,0 +1,166 @@
.486
.model flat
extrn __fltused:near
extrn __ftol:near
public _main
_TEXT segment
_main:
push ebx
push esi
push edi
push ebp
mov ebp,esp
mov eax,0
L1:
mov esp,ebp
pop ebp
pop edi
pop esi
pop ebx
ret
public _memchar
_memchar:
push ebx
push esi
push edi
push ebp
mov ebp,esp
sub esp,8
mov edi,dword ptr (-8)[ebp]
lea esi,(1)[edi]
mov dword ptr (-8)[ebp],esi
mov bl,byte ptr [edi]
mov byte ptr (-1)[ebp],bl
mov edi,dword ptr (-8)[ebp]
lea edi,(1)[edi]
mov dword ptr (-8)[ebp],edi
mov bl,byte ptr [edi]
mov byte ptr (-1)[ebp],bl
mov edi,dword ptr (-8)[ebp]
lea esi,(-1)[edi]
mov dword ptr (-8)[ebp],esi
mov bl,byte ptr [edi]
mov byte ptr (-1)[ebp],bl
mov edi,dword ptr (-8)[ebp]
lea edi,(-1)[edi]
mov dword ptr (-8)[ebp],edi
mov bl,byte ptr [edi]
mov byte ptr (-1)[ebp],bl
mov eax,0
L2:
mov esp,ebp
pop ebp
pop edi
pop esi
pop ebx
ret
public _memint
_memint:
push ebx
push esi
push edi
push ebp
mov ebp,esp
sub esp,8
mov edi,dword ptr (-8)[ebp]
lea esi,(4)[edi]
mov dword ptr (-8)[ebp],esi
mov edi,dword ptr [edi]
mov dword ptr (-4)[ebp],edi
mov edi,dword ptr (-8)[ebp]
lea edi,(4)[edi]
mov dword ptr (-8)[ebp],edi
mov edi,dword ptr [edi]
mov dword ptr (-4)[ebp],edi
mov edi,dword ptr (-8)[ebp]
lea esi,(-4)[edi]
mov dword ptr (-8)[ebp],esi
mov edi,dword ptr [edi]
mov dword ptr (-4)[ebp],edi
mov edi,dword ptr (-8)[ebp]
lea edi,(-4)[edi]
mov dword ptr (-8)[ebp],edi
mov edi,dword ptr [edi]
mov dword ptr (-4)[ebp],edi
mov eax,0
L3:
mov esp,ebp
pop ebp
pop edi
pop esi
pop ebx
ret
public _regchar
_regchar:
push ebx
push esi
push edi
push ebp
mov ebp,esp
sub esp,8
mov edi,dword ptr (-8)[ebp]
lea esi,(1)[edi]
mov dword ptr (-8)[ebp],esi
mov bl,byte ptr [edi]
mov byte ptr (-1)[ebp],bl
mov edi,dword ptr (-8)[ebp]
lea edi,(1)[edi]
mov dword ptr (-8)[ebp],edi
mov bl,byte ptr [edi]
mov byte ptr (-1)[ebp],bl
mov edi,dword ptr (-8)[ebp]
lea esi,(-1)[edi]
mov dword ptr (-8)[ebp],esi
mov bl,byte ptr [edi]
mov byte ptr (-1)[ebp],bl
mov edi,dword ptr (-8)[ebp]
lea edi,(-1)[edi]
mov dword ptr (-8)[ebp],edi
mov bl,byte ptr [edi]
mov byte ptr (-1)[ebp],bl
mov eax,0
L4:
mov esp,ebp
pop ebp
pop edi
pop esi
pop ebx
ret
public _regint
_regint:
push ebx
push esi
push edi
push ebp
mov ebp,esp
sub esp,8
mov edi,dword ptr (-8)[ebp]
lea esi,(4)[edi]
mov dword ptr (-8)[ebp],esi
mov edi,dword ptr [edi]
mov dword ptr (-4)[ebp],edi
mov edi,dword ptr (-8)[ebp]
lea edi,(4)[edi]
mov dword ptr (-8)[ebp],edi
mov edi,dword ptr [edi]
mov dword ptr (-4)[ebp],edi
mov edi,dword ptr (-8)[ebp]
lea esi,(-4)[edi]
mov dword ptr (-8)[ebp],esi
mov edi,dword ptr [edi]
mov dword ptr (-4)[ebp],edi
mov edi,dword ptr (-8)[ebp]
lea edi,(-4)[edi]
mov dword ptr (-8)[ebp],edi
mov edi,dword ptr [edi]
mov dword ptr (-4)[ebp],edi
mov eax,0
L5:
mov esp,ebp
pop ebp
pop edi
pop esi
pop ebx
ret
_TEXT ends
end

View file

@ -0,0 +1,16 @@
1 2 3 4
5 6
7
if
for
else
while
1 2 3 if
4 5 0 for
6 7 8 else
9 10 11 while
1 2 3 if
4 5 0 for
6 7 8 else
9 10 11 while
0 0 0

View file

@ -0,0 +1,3 @@
tst/init.c:36: warning: missing return value
tst/init.c:49: warning: missing return value
tst/init.c:59: warning: missing return value

View file

@ -0,0 +1,336 @@
.486
.model flat
extrn __fltused:near
extrn __ftol:near
_DATA segment
public _words
align 4
_words label byte
dd 1
dd 2
dd 3
db 105
db 102
db 0
db 3 dup (0)
db 2 dup (0)
dd 4
dd 5
db 4 dup (0)
db 102
db 111
db 114
db 3 dup (0)
db 2 dup (0)
dd 6
dd 7
dd 8
db 101
db 108
db 115
db 101
db 0
db 1 dup (0)
db 2 dup (0)
dd 9
dd 10
dd 11
db 119
db 104
db 105
db 108
db 101
db 1 dup (0)
db 2 dup (0)
dd 0
db 8 dup (0)
db 8 dup (0)
public _wordlist
align 4
_wordlist label byte
dd _words
public _x
align 4
_x label byte
dd 1
dd 2
dd 3
dd 4
dd 0
dd 5
dd 6
db 12 dup (0)
dd 7
db 16 dup (0)
public _y
align 4
_y label byte
dd _x
dd _x+20
dd _x+40
dd 00H
public _main
_DATA ends
_TEXT segment
_main:
push ebx
push esi
push edi
push ebp
mov ebp,esp
sub esp,8
mov dword ptr (-8)[ebp],0
jmp L8
L5:
mov dword ptr (-4)[ebp],0
jmp L12
L9:
mov edi,dword ptr (-4)[ebp]
mov esi,dword ptr (-8)[ebp]
mov esi,dword ptr (_y)[esi*4]
mov edi,dword ptr [esi][edi*4]
push edi
lea edi,(L13)
push edi
call _printf
add esp,8
L10:
inc dword ptr (-4)[ebp]
L12:
mov edi,dword ptr (-4)[ebp]
mov esi,dword ptr (-8)[ebp]
mov esi,dword ptr (_y)[esi*4]
cmp dword ptr [esi][edi*4],0
jne L9
lea edi,(L14)
push edi
call _printf
add esp,4
L6:
inc dword ptr (-8)[ebp]
L8:
mov edi,dword ptr (-8)[ebp]
mov edi,dword ptr (_y)[edi*4]
cmp edi,0
jne L5
call _f
add esp,0
mov edi,dword ptr (_wordlist)
push edi
call _g
add esp,4
mov eax,0
L4:
mov esp,ebp
pop ebp
pop edi
pop esi
pop ebx
ret
_TEXT ends
_DATA segment
align 4
L16 label byte
dd L17
dd L18
dd L19
dd L20
dd 00H
public _f
_DATA ends
_TEXT segment
_f:
push ebx
push esi
push edi
push ebp
mov ebp,esp
sub esp,4
lea edi,(L16)
mov dword ptr (-4)[ebp],edi
jmp L24
L21:
mov edi,dword ptr (-4)[ebp]
mov edi,dword ptr [edi]
push edi
lea edi,(L25)
push edi
call _printf
add esp,8
L22:
mov edi,dword ptr (-4)[ebp]
lea edi,(4)[edi]
mov dword ptr (-4)[ebp],edi
L24:
mov edi,dword ptr (-4)[ebp]
mov edi,dword ptr [edi]
cmp edi,0
jne L21
mov eax,0
L15:
mov esp,ebp
pop ebp
pop edi
pop esi
pop ebx
ret
public _g
_g:
push ebx
push esi
push edi
push ebp
mov ebp,esp
sub esp,4
jmp L30
L27:
mov dword ptr (-4)[ebp],0
jmp L34
L31:
mov edi,dword ptr (-4)[ebp]
mov esi,dword ptr (20)[ebp]
mov edi,dword ptr [esi][edi*4]
push edi
lea edi,(L35)
push edi
call _printf
add esp,8
L32:
inc dword ptr (-4)[ebp]
L34:
mov edi,dword ptr (-4)[ebp]
cmp edi,3
jb L31
mov edi,dword ptr (20)[ebp]
lea edi,(12)[edi]
push edi
lea edi,(L25)
push edi
call _printf
add esp,8
L28:
mov edi,dword ptr (20)[ebp]
lea edi,(20)[edi]
mov dword ptr (20)[ebp],edi
L30:
mov edi,dword ptr (20)[ebp]
cmp dword ptr [edi],0
jne L27
call _h
add esp,0
mov eax,0
L26:
mov esp,ebp
pop ebp
pop edi
pop esi
pop ebx
ret
public _h
_h:
push ebx
push esi
push edi
push ebp
mov ebp,esp
sub esp,4
mov dword ptr (-4)[ebp],0
jmp L40
L37:
imul edi,dword ptr (-4)[ebp],20
lea esi,(_words+12)[edi]
push esi
mov esi,dword ptr (_words+8)[edi]
push esi
mov esi,dword ptr (_words+4)[edi]
push esi
mov edi,dword ptr (_words)[edi]
push edi
lea edi,(L41)
push edi
call _printf
add esp,20
L38:
inc dword ptr (-4)[ebp]
L40:
mov edi,dword ptr (-4)[ebp]
cmp edi,5
jb L37
mov eax,0
L36:
mov esp,ebp
pop ebp
pop edi
pop esi
pop ebx
ret
_TEXT ends
extrn _printf:near
_TEXT segment
_TEXT ends
_TEXT segment
align 1
L41 label byte
db 37
db 100
db 32
db 37
db 100
db 32
db 37
db 100
db 32
db 37
db 115
db 10
db 0
align 1
L35 label byte
db 37
db 100
db 32
db 0
align 1
L25 label byte
db 37
db 115
db 10
db 0
align 1
L20 label byte
db 119
db 104
db 105
db 108
db 101
db 0
align 1
L19 label byte
db 101
db 108
db 115
db 101
db 0
align 1
L18 label byte
db 102
db 111
db 114
db 0
align 1
L17 label byte
db 105
db 102
db 0
align 1
L14 label byte
db 10
db 0
align 1
L13 label byte
db 32
db 37
db 100
db 0
_TEXT ends
end

View file

@ -0,0 +1,14 @@
UCHAR_MAX: 000000ff=255
USHRT_MAX: 0000ffff=65535
UINT_MAX: ffffffff=-1
ULONG_MAX: ffffffff=-1
CHAR_MAX: 0000007f=127
SCHAR_MAX: 0000007f=127
SHRT_MAX: 00007fff=32767
INT_MAX: 7fffffff=2147483647
LONG_MAX: 7fffffff=2147483647
CHAR_MIN: ffffff80=-128
SCHAR_MIN: ffffff80=-128
SHRT_MIN: ffff8000=-32768
INT_MIN: 80000000=-2147483648
LONG_MIN: 80000000=-2147483648

View file

View file

@ -0,0 +1,414 @@
.486
.model flat
extrn __fltused:near
extrn __ftol:near
public _main
_TEXT segment
_main:
push ebx
push esi
push edi
push ebp
mov ebp,esp
push 255
push 255
lea edi,(L2)
push edi
call _printf
add esp,12
push 65535
push 65535
lea edi,(L3)
push edi
call _printf
add esp,12
push 0ffffffffH
push 0ffffffffH
lea edi,(L4)
push edi
call _printf
add esp,12
push 0ffffffffH
push 0ffffffffH
lea edi,(L5)
push edi
call _printf
add esp,12
push 127
push 127
lea edi,(L6)
push edi
call _printf
add esp,12
push 127
push 127
lea edi,(L7)
push edi
call _printf
add esp,12
push 32767
push 32767
lea edi,(L8)
push edi
call _printf
add esp,12
push 2147483647
push 2147483647
lea edi,(L9)
push edi
call _printf
add esp,12
push 2147483647
push 2147483647
lea edi,(L10)
push edi
call _printf
add esp,12
push -128
push -128
lea edi,(L11)
push edi
call _printf
add esp,12
push -128
push -128
lea edi,(L12)
push edi
call _printf
add esp,12
push -32768
push -32768
lea edi,(L13)
push edi
call _printf
add esp,12
push -2147483648
push -2147483648
lea edi,(L14)
push edi
call _printf
add esp,12
push -2147483648
push -2147483648
lea edi,(L15)
push edi
call _printf
add esp,12
mov eax,0
L1:
mov esp,ebp
pop ebp
pop edi
pop esi
pop ebx
ret
_TEXT ends
extrn _printf:near
_TEXT segment
_TEXT ends
_TEXT segment
align 1
L15 label byte
db 76
db 79
db 78
db 71
db 95
db 77
db 73
db 78
db 58
db 9
db 37
db 48
db 56
db 108
db 120
db 61
db 37
db 108
db 100
db 10
db 0
align 1
L14 label byte
db 73
db 78
db 84
db 95
db 77
db 73
db 78
db 58
db 9
db 37
db 48
db 56
db 120
db 61
db 37
db 100
db 10
db 0
align 1
L13 label byte
db 83
db 72
db 82
db 84
db 95
db 77
db 73
db 78
db 58
db 9
db 37
db 48
db 56
db 120
db 61
db 37
db 100
db 10
db 0
align 1
L12 label byte
db 83
db 67
db 72
db 65
db 82
db 95
db 77
db 73
db 78
db 58
db 9
db 37
db 48
db 56
db 120
db 61
db 37
db 100
db 10
db 0
align 1
L11 label byte
db 67
db 72
db 65
db 82
db 95
db 77
db 73
db 78
db 58
db 9
db 37
db 48
db 56
db 120
db 61
db 37
db 100
db 10
db 0
align 1
L10 label byte
db 76
db 79
db 78
db 71
db 95
db 77
db 65
db 88
db 58
db 9
db 37
db 48
db 56
db 108
db 120
db 61
db 37
db 108
db 100
db 10
db 0
align 1
L9 label byte
db 73
db 78
db 84
db 95
db 77
db 65
db 88
db 58
db 9
db 37
db 48
db 56
db 120
db 61
db 37
db 100
db 10
db 0
align 1
L8 label byte
db 83
db 72
db 82
db 84
db 95
db 77
db 65
db 88
db 58
db 9
db 37
db 48
db 56
db 120
db 61
db 37
db 100
db 10
db 0
align 1
L7 label byte
db 83
db 67
db 72
db 65
db 82
db 95
db 77
db 65
db 88
db 58
db 9
db 37
db 48
db 56
db 120
db 61
db 37
db 100
db 10
db 0
align 1
L6 label byte
db 67
db 72
db 65
db 82
db 95
db 77
db 65
db 88
db 58
db 9
db 37
db 48
db 56
db 120
db 61
db 37
db 100
db 10
db 0
align 1
L5 label byte
db 85
db 76
db 79
db 78
db 71
db 95
db 77
db 65
db 88
db 58
db 9
db 37
db 48
db 56
db 108
db 120
db 61
db 37
db 108
db 100
db 10
db 0
align 1
L4 label byte
db 85
db 73
db 78
db 84
db 95
db 77
db 65
db 88
db 58
db 9
db 37
db 48
db 56
db 120
db 61
db 37
db 100
db 10
db 0
align 1
L3 label byte
db 85
db 83
db 72
db 82
db 84
db 95
db 77
db 65
db 88
db 58
db 9
db 37
db 48
db 56
db 120
db 61
db 37
db 100
db 10
db 0
align 1
L2 label byte
db 85
db 67
db 72
db 65
db 82
db 95
db 77
db 65
db 88
db 58
db 9
db 37
db 48
db 56
db 120
db 61
db 37
db 100
db 10
db 0
_TEXT ends
end

View file

@ -0,0 +1,179 @@
Lest this program stop prematurely, i.e. before displaying
`END OF TEST',
try to persuade the computer NOT to terminate execution when an
error like Over/Underflow or Division by Zero occurs, but rather
to persevere with a surrogate value after, perhaps, displaying some
warning. If persuasion avails naught, don't despair but run this
program anyway to see how many milestones it passes, and then
amend it to make further progress.
Answer questions with Y, y, N or n (unless otherwise indicated).
Diagnosis resumes after milestone Number 0 Page: 1
Users are invited to help debug and augment this program so it will
cope with unanticipated and newly uncovered arithmetic pathologies.
Please send suggestions and interesting results to
Richard Karpinski
Computer Center U-76
University of California
San Francisco, CA 94143-0704, USA
In doing so, please include the following information:
Precision: double;
Version: 10 February 1989;
Computer:
Compiler:
Optimization level:
Other relevant compiler options:
Diagnosis resumes after milestone Number 1 Page: 2
Running this program should reveal these characteristics:
Radix = 1, 2, 4, 8, 10, 16, 100, 256 ...
Precision = number of significant digits carried.
U2 = Radix/Radix^Precision = One Ulp
(OneUlpnit in the Last Place) of 1.000xxx .
U1 = 1/Radix^Precision = One Ulp of numbers a little less than 1.0 .
Adequacy of guard digits for Mult., Div. and Subt.
Whether arithmetic is chopped, correctly rounded, or something else
for Mult., Div., Add/Subt. and Sqrt.
Whether a Sticky Bit used correctly for rounding.
UnderflowThreshold = an underflow threshold.
E0 and PseudoZero tell whether underflow is abrupt, gradual, or fuzzy.
V = an overflow threshold, roughly.
V0 tells, roughly, whether Infinity is represented.
Comparisions are checked for consistency with subtraction
and for contamination with pseudo-zeros.
Sqrt is tested. Y^X is not tested.
Extra-precise subexpressions are revealed but NOT YET tested.
Decimal-Binary conversion is NOT YET tested for accuracy.
Diagnosis resumes after milestone Number 2 Page: 3
The program attempts to discriminate among
FLAWs, like lack of a sticky bit,
Serious DEFECTs, like lack of a guard digit, and
FAILUREs, like 2+2 == 5 .
Failures may confound subsequent diagnoses.
The diagnostic capabilities of this program go beyond an earlier
program called `MACHAR', which can be found at the end of the
book `Software Manual for the Elementary Functions' (1980) by
W. J. Cody and W. Waite. Although both programs try to discover
the Radix, Precision and range (over/underflow thresholds)
of the arithmetic, this program tries to cope with a wider variety
of pathologies, and to say how well the arithmetic is implemented.
The program is based upon a conventional radix representation for
floating-point numbers, but also allows logarithmic encoding
as used by certain early WANG machines.
BASIC version of this program (C) 1983 by Prof. W. M. Kahan;
see source comments for more history.
Diagnosis resumes after milestone Number 3 Page: 4
Program is now RUNNING tests on small integers:
-1, 0, 1/2, 1, 2, 3, 4, 5, 9, 27, 32 & 240 are O.K.
Searching for Radix and Precision.
Radix = 2.000000 .
Closest relative separation found is U1 = 1.1102230e-016 .
Recalculating radix and precision
confirms closest relative separation U1 .
Radix confirmed.
The number of significant digits of the Radix is 53.000000 .
Diagnosis resumes after milestone Number 30 Page: 5
Subtraction appears to be normalized, as it should be.
Checking for guard digit in *, /, and -.
*, /, and - appear to have guard digits, as they should.
Diagnosis resumes after milestone Number 40 Page: 6
Checking rounding on multiply, divide and add/subtract.
Multiplication appears to round correctly.
Division appears to round correctly.
Addition/Subtraction appears to round correctly.
Checking for sticky bit.
Sticky bit apparently used correctly.
Does Multiplication commute? Testing on 20 random pairs.
No failures found in 20 integer pairs.
Running test of square root(x).
Testing if sqrt(X * X) == X for 20 Integers X.
Test for sqrt monotonicity.
sqrt has passed a test for Monotonicity.
Testing whether sqrt is rounded or chopped.
Square root appears to be correctly rounded.
Diagnosis resumes after milestone Number 90 Page: 7
Testing powers Z^i for small Integers Z and i.
... no discrepancis found.
Seeking Underflow thresholds UfThold and E0.
Smallest strictly positive number found is E0 = 4.94066e-324 .
Since comparison denies Z = 0, evaluating (Z + Z) / Z should be safe.
What the machine gets for (Z + Z) / Z is 2.00000000000000000e+000 .
This is O.K., provided Over/Underflow has NOT just been signaled.
Underflow is gradual; it incurs Absolute Error =
(roundoff in UfThold) < E0.
The Underflow threshold is 2.22507385850720190e-308, below which
calculation may suffer larger Relative error than merely roundoff.
Since underflow occurs below the threshold
UfThold = (2.00000000000000000e+000) ^ (-1.02200000000000000e+003)
only underflow should afflict the expression
(2.00000000000000000e+000) ^ (-1.02200000000000000e+003);
actually calculating yields: 0.00000000000000000e+000 .
This computed value is O.K.
Testing X^((X + 1) / (X - 1)) vs. exp(2) = 7.38905609893065220e+000 as X -> 1.
Accuracy seems adequate.
Testing powers Z^Q at four nearly extreme values.
... no discrepancies found.
Diagnosis resumes after milestone Number 160 Page: 8
Searching for Overflow threshold:
This may generate an error.
Can `Z = -Y' overflow?
Trying it on Y = -1.#INF0000000000000e+000 .
Seems O.K.
Overflow threshold is V = 1.79769313486231570e+308 .
Overflow saturates at V0 = 1.#INF0000000000000e+000 .
No Overflow should be signaled for V * 1 = 1.79769313486231570e+308
nor for V / 1 = 1.79769313486231570e+308 .
Any overflow signal separating this * from the one
above is a DEFECT.
Diagnosis resumes after milestone Number 190 Page: 9
What message and/or values does Division by Zero produce?
Trying to compute 1 / 0 produces ... 1.#INF000e+000 .
Trying to compute 0 / 0 produces ... -1.#IND000e+000 .
Diagnosis resumes after milestone Number 220 Page: 10
No failures, defects nor flaws have been discovered.
Rounding appears to conform to the proposed IEEE standard P754,
except for possibly Double Rounding during Gradual Underflow.
The arithmetic diagnosed appears to be Excellent!
END OF TEST.

View file

@ -0,0 +1,16 @@
tst/paranoia.c:1867: warning: missing return value
tst/paranoia.c:1874: warning: missing return value
tst/paranoia.c:1884: warning: missing return value
tst/paranoia.c:1924: warning: missing return value
tst/paranoia.c:1939: warning: missing return value
tst/paranoia.c:1956: warning: missing return value
tst/paranoia.c:1975: warning: missing return value
tst/paranoia.c:1988: warning: missing return value
tst/paranoia.c:1995: warning: missing return value
tst/paranoia.c:2055: warning: missing return value
tst/paranoia.c:2062: warning: missing return value
tst/paranoia.c:2070: warning: missing return value
tst/paranoia.c:2087: warning: missing return value
tst/paranoia.c:2115: warning: missing return value
tst/paranoia.c:2144: warning: missing return value
tst/paranoia.c:2173: warning: missing return value

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,20 @@
exchange(1,9)
exchange(3,7)
exchange(5,6)
exchange(0,5)
exchange(0,3)
exchange(0,0)
exchange(1,2)
exchange(6,6)
exchange(8,9)
exchange(7,8)
-51
-1
0
1
3
10
18
32
567
789

View file

@ -0,0 +1,5 @@
tst/sort.c:23: warning: missing return value
tst/sort.c:30: warning: missing return value
tst/sort.c:37: warning: missing return value
tst/sort.c:41: warning: missing return value
tst/sort.c:65: warning: missing return value

View file

@ -0,0 +1,324 @@
.486
.model flat
extrn __fltused:near
extrn __ftol:near
_DATA segment
public _in
align 4
_in label byte
dd 10
dd 32
dd -1
dd 567
dd 3
dd 18
dd 1
dd -51
dd 789
dd 0
public _main
_DATA ends
_TEXT segment
_main:
push ebx
push esi
push edi
push ebp
mov ebp,esp
sub esp,4
push 10
lea edi,(_in)
push edi
call _sort
add esp,8
mov dword ptr (-4)[ebp],0
jmp L5
L2:
mov edi,dword ptr (-4)[ebp]
mov edi,dword ptr (_in)[edi*4]
push edi
call _putd
add esp,4
push 10
call _putchar
add esp,4
L3:
inc dword ptr (-4)[ebp]
L5:
mov edi,dword ptr (-4)[ebp]
cmp edi,10
jb L2
mov eax,0
L1:
mov esp,ebp
pop ebp
pop edi
pop esi
pop ebx
ret
public _putd
_putd:
push ebx
push esi
push edi
push ebp
mov ebp,esp
cmp dword ptr (20)[ebp],0
jge L7
push 45
call _putchar
add esp,4
neg dword ptr (20)[ebp]
L7:
mov eax,dword ptr (20)[ebp]
mov edi,10
cdq
idiv edi
cmp eax,0
je L9
mov eax,dword ptr (20)[ebp]
mov edi,10
cdq
idiv edi
push eax
call _putd
add esp,4
L9:
mov eax,dword ptr (20)[ebp]
mov edi,10
cdq
idiv edi
lea edi,(48)[edx]
push edi
call _putchar
add esp,4
mov eax,0
L6:
mov esp,ebp
pop ebp
pop edi
pop esi
pop ebx
ret
public _sort
_sort:
push ebx
push esi
push edi
push ebp
mov ebp,esp
mov edi,dword ptr (24)[ebp]
sub edi,1
mov dword ptr (24)[ebp],edi
push edi
push 0
mov edi,dword ptr (20)[ebp]
mov dword ptr (_xx),edi
push edi
call _quick
add esp,12
mov eax,0
L11:
mov esp,ebp
pop ebp
pop edi
pop esi
pop ebx
ret
public _quick
_quick:
push ebx
push esi
push edi
push ebp
mov ebp,esp
sub esp,4
mov edi,dword ptr (28)[ebp]
cmp dword ptr (24)[ebp],edi
jl L13
jmp L12
L13:
mov edi,dword ptr (28)[ebp]
push edi
mov edi,dword ptr (24)[ebp]
push edi
mov edi,dword ptr (20)[ebp]
push edi
call _partition
add esp,12
mov dword ptr (-4)[ebp],eax
mov edi,dword ptr (-4)[ebp]
sub edi,1
push edi
mov edi,dword ptr (24)[ebp]
push edi
mov edi,dword ptr (20)[ebp]
push edi
call _quick
add esp,12
mov edi,dword ptr (28)[ebp]
push edi
mov edi,dword ptr (-4)[ebp]
lea edi,(1)[edi]
push edi
mov edi,dword ptr (20)[ebp]
push edi
call _quick
add esp,12
mov eax,0
L12:
mov esp,ebp
pop ebp
pop edi
pop esi
pop ebx
ret
public _partition
_partition:
push ebx
push esi
push edi
push ebp
mov ebp,esp
sub esp,8
inc dword ptr (28)[ebp]
mov edi,dword ptr (24)[ebp]
mov dword ptr (-8)[ebp],edi
mov edi,dword ptr (-8)[ebp]
mov esi,dword ptr (20)[ebp]
mov edi,dword ptr [esi][edi*4]
mov dword ptr (-4)[ebp],edi
jmp L17
L16:
inc dword ptr (24)[ebp]
jmp L20
L19:
inc dword ptr (24)[ebp]
L20:
mov edi,dword ptr (24)[ebp]
mov esi,dword ptr (20)[ebp]
mov ebx,dword ptr (-4)[ebp]
cmp dword ptr [esi][edi*4],ebx
jl L19
dec dword ptr (28)[ebp]
jmp L23
L22:
dec dword ptr (28)[ebp]
L23:
mov edi,dword ptr (28)[ebp]
mov esi,dword ptr (20)[ebp]
mov ebx,dword ptr (-4)[ebp]
cmp dword ptr [esi][edi*4],ebx
jg L22
mov edi,dword ptr (28)[ebp]
cmp dword ptr (24)[ebp],edi
jge L25
mov edi,dword ptr (20)[ebp]
mov esi,dword ptr (28)[ebp]
lea esi,[edi][esi*4]
push esi
mov esi,dword ptr (24)[ebp]
lea edi,[edi][esi*4]
push edi
call _exchange
add esp,8
L25:
L17:
mov edi,dword ptr (28)[ebp]
cmp dword ptr (24)[ebp],edi
jl L16
mov edi,dword ptr (20)[ebp]
mov esi,dword ptr (28)[ebp]
lea esi,[edi][esi*4]
push esi
mov esi,dword ptr (-8)[ebp]
lea edi,[edi][esi*4]
push edi
call _exchange
add esp,8
mov eax,dword ptr (28)[ebp]
L15:
mov esp,ebp
pop ebp
pop edi
pop esi
pop ebx
ret
public _exchange
_exchange:
push ebx
push esi
push edi
push ebp
mov ebp,esp
sub esp,4
mov edi,dword ptr (_xx)
mov esi,4
mov ebx,dword ptr (24)[ebp]
sub ebx,edi
mov eax,ebx
cdq
idiv esi
push eax
mov ebx,dword ptr (20)[ebp]
sub ebx,edi
mov eax,ebx
cdq
idiv esi
push eax
lea edi,(L28)
push edi
call _printf
add esp,12
mov edi,dword ptr (20)[ebp]
mov esi,dword ptr [edi]
mov dword ptr (-4)[ebp],esi
mov esi,dword ptr (24)[ebp]
mov esi,dword ptr [esi]
mov dword ptr [edi],esi
mov edi,dword ptr (24)[ebp]
mov esi,dword ptr (-4)[ebp]
mov dword ptr [edi],esi
mov eax,0
L27:
mov esp,ebp
pop ebp
pop edi
pop esi
pop ebx
ret
_TEXT ends
extrn _printf:near
_TEXT segment
_TEXT ends
extrn _putchar:near
_TEXT segment
_TEXT ends
_DATA segment
public _xx
align 4
_xx label byte
db 4 dup (0)
_DATA ends
_TEXT segment
align 1
L28 label byte
db 101
db 120
db 99
db 104
db 97
db 110
db 103
db 101
db 40
db 37
db 100
db 44
db 37
db 100
db 41
db 10
db 0
_TEXT ends
end

View file

View file

@ -0,0 +1,6 @@
tst/spill.c:1: warning: missing return value
tst/spill.c:3: warning: missing return value
tst/spill.c:5: warning: missing return value
tst/spill.c:7: warning: missing return value
tst/spill.c:9: warning: missing return value
tst/spill.c:17: warning: missing return value

View file

@ -0,0 +1,259 @@
.486
.model flat
extrn __fltused:near
extrn __ftol:near
public _main
_TEXT segment
_main:
push ebx
push esi
push edi
push ebp
mov ebp,esp
mov eax,0
L1:
mov esp,ebp
pop ebp
pop edi
pop esi
pop ebx
ret
public _f
_f:
push ebx
push esi
push edi
push ebp
mov ebp,esp
call _f
add esp,0
mov edi,eax
call _f
add esp,0
lea edi,[eax][edi]
mov dword ptr (20)[ebp],edi
mov eax,0
L2:
mov esp,ebp
pop ebp
pop edi
pop esi
pop ebx
ret
public _f2
_f2:
push ebx
push esi
push edi
push ebp
mov ebp,esp
sub esp,4
call _f
add esp,0
mov edi,eax
cmp dword ptr (20)[ebp],0
je L5
call _f
add esp,0
mov esi,eax
mov dword ptr (-4)[ebp],esi
jmp L6
L5:
mov dword ptr (-4)[ebp],1
L6:
mov esi,dword ptr (-4)[ebp]
lea edi,[esi][edi]
mov dword ptr (20)[ebp],edi
mov eax,0
L3:
mov esp,ebp
pop ebp
pop edi
pop esi
pop ebx
ret
public _f3
_f3:
push ebx
push esi
push edi
push ebp
mov ebp,esp
sub esp,44
mov dword ptr (-4)[ebp],0
mov dword ptr (-8)[ebp],0
mov dword ptr (-12)[ebp],0
mov dword ptr (-16)[ebp],0
mov dword ptr (-20)[ebp],0
mov dword ptr (-24)[ebp],0
mov dword ptr (-28)[ebp],0
mov dword ptr (-32)[ebp],0
mov dword ptr (-36)[ebp],0
mov dword ptr (-40)[ebp],0
mov edi,dword ptr (24)[ebp]
lea esi,(4)[edi]
mov dword ptr (24)[ebp],esi
cmp dword ptr (20)[ebp],0
je L9
call _f
add esp,0
mov esi,eax
mov dword ptr (-44)[ebp],esi
jmp L10
L9:
mov dword ptr (-44)[ebp],0
L10:
mov esi,dword ptr (-44)[ebp]
mov dword ptr [edi],esi
mov eax,0
L7:
mov esp,ebp
pop ebp
pop edi
pop esi
pop ebx
ret
public _f4
_f4:
push ebx
push esi
push edi
push ebp
mov ebp,esp
sub esp,52
mov dword ptr (-4)[ebp],0
mov dword ptr (-8)[ebp],0
mov dword ptr (-12)[ebp],0
mov dword ptr (-16)[ebp],0
mov dword ptr (-20)[ebp],0
mov dword ptr (-24)[ebp],0
mov edi,dword ptr (_i)
lea esi,[edi*8]
fld qword ptr (_a)[esi]
fstp qword ptr (-36)[ebp]
fld qword ptr (_b)[esi]
fstp qword ptr (-44)[ebp]
fld qword ptr (-36)[ebp]
fadd qword ptr (-44)[ebp]
fld qword ptr (L15)
fcompp
fstsw ax
sahf
je L13
cmp edi,0
je L13
fld qword ptr (-36)[ebp]
fsub qword ptr (-44)[ebp]
fld qword ptr (L15)
fcompp
fstsw ax
sahf
je L13
mov dword ptr (-28)[ebp],1
jmp L14
L13:
mov dword ptr (-28)[ebp],0
L14:
mov edi,dword ptr (-28)[ebp]
mov dword ptr (_i),edi
mov eax,0
L11:
mov esp,ebp
pop ebp
pop edi
pop esi
pop ebx
ret
public _f5
_f5:
push ebx
push esi
push edi
push ebp
mov ebp,esp
mov edi,dword ptr (_k)
mov esi,dword ptr (_m)
mov ebx,dword ptr (_A)
mov edx,edi
imul edx,esi
lea edx,[ebx][edx*8]
mov ecx,dword ptr (_j)
mov eax,ecx
imul eax,esi
lea esi,[ebx][eax*8]
mov ebx,dword ptr (_n)
mov eax,dword ptr (_B)
imul edi,ebx
lea edi,[eax][edi*8]
imul ecx,ebx
lea ebx,[eax][ecx*8]
fld qword ptr [edx]
fmul qword ptr [esi]
fld qword ptr [edi]
fmul qword ptr [ebx]
faddp st(1),st
fstp qword ptr (_x)
fld qword ptr [edx]
fmul qword ptr [ebx]
fld qword ptr [edi]
fmul qword ptr [esi]
fsubp st(1),st
fstp qword ptr (_x)
mov eax,0
L16:
mov esp,ebp
pop ebp
pop edi
pop esi
pop ebx
ret
_TEXT ends
_DATA segment
public _x
align 4
_x label byte
db 8 dup (0)
public _B
align 4
_B label byte
db 4 dup (0)
public _A
align 4
_A label byte
db 4 dup (0)
public _n
align 4
_n label byte
db 4 dup (0)
public _m
align 4
_m label byte
db 4 dup (0)
public _k
align 4
_k label byte
db 4 dup (0)
public _j
align 4
_j label byte
db 4 dup (0)
public _i
align 4
_i label byte
db 4 dup (0)
public _b
align 4
_b label byte
db 80 dup (0)
public _a
align 4
_a label byte
db 80 dup (0)
_DATA ends
_TEXT segment
align 4
L15 label byte
dd 00H
dd 00H
_TEXT ends
end

View file

@ -0,0 +1,6 @@
test 1
test 2
test 3
test 4
test 5.000000
{1 2 3 4} {1 2 3 4} {1 2 3 4} {1 2 3 4} {1 2 3 4} {1 2 3 4}

View file

@ -0,0 +1 @@
tst/stdarg.c:51: warning: missing return value

View file

@ -0,0 +1,415 @@
.486
.model flat
extrn __fltused:near
extrn __ftol:near
_DATA segment
public _x
align 4
_x label byte
dd 1
dd 2
dd 3
dd 4
public _main
_DATA ends
_TEXT segment
_main:
push ebx
push esi
push edi
push ebp
mov ebp,esp
sub esp,8
lea edi,(L2)
push edi
call _print
add esp,4
lea edi,(L4)
push edi
lea edi,(L3)
push edi
call _print
add esp,8
push 10
push 3
lea edi,(L5)
push edi
call _print
add esp,12
push 10
push 4
lea edi,(L8)
push edi
lea edi,(L7)
push edi
lea edi,(L6)
push edi
call _print
add esp,20
push 10
fld qword ptr (L10)
sub esp,8
fstp qword ptr [esp]
lea edi,(L8)
push edi
lea edi,(L7)
push edi
lea edi,(L9)
push edi
call _print
add esp,24
lea edi,(_x)
mov dword ptr (-8)[ebp],edi
mov esi,edi
mov dword ptr (-4)[ebp],esi
sub esp,16
mov edi,esp
mov ecx,16
rep movsb
mov edi,dword ptr (-8)[ebp]
mov esi,edi
sub esp,16
mov edi,esp
mov ecx,16
rep movsb
mov edi,dword ptr (-8)[ebp]
mov esi,edi
sub esp,16
mov edi,esp
mov ecx,16
rep movsb
mov edi,dword ptr (-8)[ebp]
mov esi,edi
sub esp,16
mov edi,esp
mov ecx,16
rep movsb
mov edi,dword ptr (-8)[ebp]
mov esi,edi
sub esp,16
mov edi,esp
mov ecx,16
rep movsb
mov edi,dword ptr (-8)[ebp]
mov esi,edi
sub esp,16
mov edi,esp
mov ecx,16
rep movsb
lea edi,(L11)
push edi
call _print
add esp,100
mov eax,0
L1:
mov esp,ebp
pop ebp
pop edi
pop esi
pop ebx
ret
public _print
_print:
push ebx
push esi
push edi
push ebp
mov ebp,esp
sub esp,28
lea edi,(24)[ebp]
mov dword ptr (-4)[ebp],edi
jmp L17
L14:
mov edi,dword ptr (20)[ebp]
movsx edi,byte ptr [edi]
cmp edi,37
jne L18
mov edi,dword ptr (20)[ebp]
lea edi,(1)[edi]
mov dword ptr (20)[ebp],edi
movsx edi,byte ptr [edi]
mov dword ptr (-8)[ebp],edi
mov edi,dword ptr (-8)[ebp]
cmp edi,115
je L34
cmp edi,115
jg L39
L38:
mov edi,dword ptr (-8)[ebp]
cmp edi,98
jl L20
cmp edi,102
jg L20
jmp dword ptr (L40-392)[edi*4]
_TEXT ends
_TEXT segment
align 4
L40 label byte
dd L23
dd L28
dd L30
dd L20
dd L36
_TEXT ends
_TEXT segment
L39:
cmp dword ptr (-8)[ebp],119
je L32
jmp L20
L23:
mov edi,dword ptr (-4)[ebp]
lea edi,(16)[edi]
mov dword ptr (-28)[ebp],edi
mov dword ptr (-4)[ebp],edi
lea edi,(-24)[ebp]
mov esi,dword ptr (-28)[ebp]
lea esi,(-16)[esi]
mov ecx,16
rep movsb
mov edi,dword ptr (-12)[ebp]
push edi
mov edi,dword ptr (-16)[ebp]
push edi
mov edi,dword ptr (-20)[ebp]
push edi
mov edi,dword ptr (-24)[ebp]
push edi
lea edi,(L24)
push edi
call _printf
add esp,20
jmp L19
L28:
mov edi,dword ptr (-4)[ebp]
lea edi,(4)[edi]
mov dword ptr (-4)[ebp],edi
movsx edi,byte ptr (-4)[edi]
push edi
lea edi,(L29)
push edi
call _printf
add esp,8
jmp L19
L30:
mov edi,dword ptr (-4)[ebp]
lea edi,(4)[edi]
mov dword ptr (-4)[ebp],edi
mov edi,dword ptr (-4)[edi]
push edi
lea edi,(L31)
push edi
call _printf
add esp,8
jmp L19
L32:
mov edi,dword ptr (-4)[ebp]
lea edi,(4)[edi]
mov dword ptr (-4)[ebp],edi
movsx edi,word ptr (-4)[edi]
push edi
lea edi,(L33)
push edi
call _printf
add esp,8
jmp L19
L34:
mov edi,dword ptr (-4)[ebp]
lea edi,(4)[edi]
mov dword ptr (-4)[ebp],edi
mov edi,dword ptr (-4)[edi]
push edi
lea edi,(L35)
push edi
call _printf
add esp,8
jmp L19
L36:
mov edi,dword ptr (-4)[ebp]
lea edi,(8)[edi]
mov dword ptr (-4)[ebp],edi
fld qword ptr (-8)[edi]
sub esp,8
fstp qword ptr [esp]
lea edi,(L37)
push edi
call _printf
add esp,12
jmp L19
L20:
mov edi,dword ptr (20)[ebp]
movsx edi,byte ptr [edi]
push edi
lea edi,(L29)
push edi
call _printf
add esp,8
jmp L19
L18:
mov edi,dword ptr (20)[ebp]
movsx edi,byte ptr [edi]
push edi
lea edi,(L29)
push edi
call _printf
add esp,8
L19:
L15:
inc dword ptr (20)[ebp]
L17:
mov edi,dword ptr (20)[ebp]
movsx edi,byte ptr [edi]
cmp edi,0
jne L14
mov dword ptr (-4)[ebp],0
mov eax,0
L12:
mov esp,ebp
pop ebp
pop edi
pop esi
pop ebx
ret
_TEXT ends
extrn _printf:near
_TEXT segment
_TEXT ends
_TEXT segment
align 1
L37 label byte
db 37
db 102
db 0
align 1
L35 label byte
db 37
db 115
db 0
align 1
L33 label byte
db 37
db 120
db 0
align 1
L31 label byte
db 37
db 100
db 0
align 1
L29 label byte
db 37
db 99
db 0
align 1
L24 label byte
db 123
db 37
db 100
db 32
db 37
db 100
db 32
db 37
db 100
db 32
db 37
db 100
db 125
db 0
align 1
L11 label byte
db 37
db 98
db 32
db 37
db 98
db 32
db 37
db 98
db 32
db 37
db 98
db 32
db 37
db 98
db 32
db 37
db 98
db 10
db 0
align 4
L10 label byte
dd 00H
dd 040140000H
align 1
L9 label byte
db 37
db 115
db 37
db 115
db 32
db 37
db 102
db 37
db 99
db 0
align 1
L8 label byte
db 115
db 116
db 0
align 1
L7 label byte
db 116
db 101
db 0
align 1
L6 label byte
db 37
db 115
db 37
db 115
db 32
db 37
db 119
db 37
db 99
db 0
align 1
L5 label byte
db 116
db 101
db 115
db 116
db 32
db 37
db 100
db 37
db 99
db 0
align 1
L4 label byte
db 50
db 0
align 1
L3 label byte
db 116
db 101
db 115
db 116
db 32
db 37
db 115
db 10
db 0
align 1
L2 label byte
db 116
db 101
db 115
db 116
db 32
db 49
db 10
db 0
_TEXT ends
end

View file

@ -0,0 +1,5 @@
(-1,-1) is not within [10,10; 310,310]
(1,1) is not within [10,10; 310,310]
(20,300) is within [10,10; 310,310]
(500,400) is not within [10,10; 310,310]
ab

View file

@ -0,0 +1,2 @@
tst/struct.c:49: warning: missing return value
tst/struct.c:68: warning: missing return value

View file

@ -0,0 +1,453 @@
.486
.model flat
extrn __fltused:near
extrn __ftol:near
public _addpoint
_TEXT segment
_addpoint:
push ebx
push esi
push edi
push ebp
mov ebp,esp
mov edi,dword ptr (32)[ebp]
add dword ptr (24)[ebp],edi
mov edi,dword ptr (36)[ebp]
add dword ptr (28)[ebp],edi
mov edi,dword ptr (20)[ebp]
lea esi,(24)[ebp]
mov ecx,8
rep movsb
L1:
mov esp,ebp
pop ebp
pop edi
pop esi
pop ebx
ret
public _canonrect
_canonrect:
push ebx
push esi
push edi
push ebp
mov ebp,esp
sub esp,32
mov edi,dword ptr (32)[ebp]
cmp dword ptr (24)[ebp],edi
jge L10
mov edi,dword ptr (24)[ebp]
mov dword ptr (-20)[ebp],edi
jmp L11
L10:
mov edi,dword ptr (32)[ebp]
mov dword ptr (-20)[ebp],edi
L11:
mov edi,dword ptr (-20)[ebp]
mov dword ptr (-16)[ebp],edi
mov edi,dword ptr (36)[ebp]
cmp dword ptr (28)[ebp],edi
jge L20
mov edi,dword ptr (28)[ebp]
mov dword ptr (-24)[ebp],edi
jmp L21
L20:
mov edi,dword ptr (36)[ebp]
mov dword ptr (-24)[ebp],edi
L21:
mov edi,dword ptr (-24)[ebp]
mov dword ptr (-12)[ebp],edi
mov edi,dword ptr (32)[ebp]
cmp dword ptr (24)[ebp],edi
jle L26
mov edi,dword ptr (24)[ebp]
mov dword ptr (-28)[ebp],edi
jmp L27
L26:
mov edi,dword ptr (32)[ebp]
mov dword ptr (-28)[ebp],edi
L27:
mov edi,dword ptr (-28)[ebp]
mov dword ptr (-8)[ebp],edi
mov edi,dword ptr (36)[ebp]
cmp dword ptr (28)[ebp],edi
jle L37
mov edi,dword ptr (28)[ebp]
mov dword ptr (-32)[ebp],edi
jmp L38
L37:
mov edi,dword ptr (36)[ebp]
mov dword ptr (-32)[ebp],edi
L38:
mov edi,dword ptr (-32)[ebp]
mov dword ptr (-4)[ebp],edi
mov edi,dword ptr (20)[ebp]
lea esi,(-16)[ebp]
mov ecx,16
rep movsb
L5:
mov esp,ebp
pop ebp
pop edi
pop esi
pop ebx
ret
public _makepoint
_makepoint:
push ebx
push esi
push edi
push ebp
mov ebp,esp
sub esp,8
mov edi,dword ptr (24)[ebp]
mov dword ptr (-8)[ebp],edi
mov edi,dword ptr (28)[ebp]
mov dword ptr (-4)[ebp],edi
mov edi,dword ptr (20)[ebp]
lea esi,(-8)[ebp]
mov ecx,8
rep movsb
L39:
mov esp,ebp
pop ebp
pop edi
pop esi
pop ebx
ret
public _makerect
_makerect:
push ebx
push esi
push edi
push ebp
mov ebp,esp
sub esp,16
lea edi,(-16)[ebp]
lea esi,(24)[ebp]
mov ecx,8
rep movsb
lea edi,(-8)[ebp]
lea esi,(32)[ebp]
mov ecx,8
rep movsb
lea esi,(-16)[ebp]
sub esp,16
mov edi,esp
mov ecx,16
rep movsb
mov edi,dword ptr (20)[ebp]
push edi
call _canonrect
add esp,20
L42:
mov esp,ebp
pop ebp
pop edi
pop esi
pop ebx
ret
public _ptinrect
_ptinrect:
push ebx
push esi
push edi
push ebp
mov ebp,esp
sub esp,4
mov edi,dword ptr (20)[ebp]
cmp edi,dword ptr (28)[ebp]
jl L53
cmp edi,dword ptr (36)[ebp]
jge L53
mov edi,dword ptr (32)[ebp]
cmp dword ptr (24)[ebp],edi
jl L53
mov edi,dword ptr (40)[ebp]
cmp dword ptr (24)[ebp],edi
jge L53
mov dword ptr (-4)[ebp],1
jmp L54
L53:
mov dword ptr (-4)[ebp],0
L54:
mov eax,dword ptr (-4)[ebp]
L45:
mov esp,ebp
pop ebp
pop edi
pop esi
pop ebx
ret
_TEXT ends
_DATA segment
public _y
align 4
_y label byte
db 97
db 98
db 0
db 1 dup (0)
public _odd
_DATA ends
_TEXT segment
_odd:
push ebx
push esi
push edi
push ebp
mov ebp,esp
sub esp,4
lea edi,(-4)[ebp]
lea esi,(20)[ebp]
mov ecx,4
rep movsb
lea edi,(-4)[ebp]
push edi
lea edi,(L56)
push edi
call _printf
add esp,8
mov eax,0
L55:
mov esp,ebp
pop ebp
pop edi
pop esi
pop ebx
ret
_TEXT ends
_TEXT segment
align 4
L58 label byte
dd 0
dd 0
align 4
L59 label byte
dd 320
dd 320
align 4
L60 label byte
dd -1
dd -1
dd 1
dd 1
dd 20
dd 300
dd 500
dd 400
public _main
_TEXT ends
_TEXT segment
_main:
push ebx
push esi
push edi
push ebp
mov ebp,esp
sub esp,108
lea edi,(-68)[ebp]
lea esi,(L58)
mov ecx,8
rep movsb
lea edi,(-76)[ebp]
lea esi,(L59)
mov ecx,8
rep movsb
lea edi,(-36)[ebp]
lea esi,(L60)
mov ecx,32
rep movsb
push -10
push -10
lea edi,(-84)[ebp]
push edi
call _makepoint
add esp,12
lea esi,(-84)[ebp]
sub esp,8
mov edi,esp
mov ecx,8
rep movsb
lea esi,(-76)[ebp]
sub esp,8
mov edi,esp
mov ecx,8
rep movsb
lea edi,(-92)[ebp]
push edi
call _addpoint
add esp,20
push 10
push 10
lea edi,(-100)[ebp]
push edi
call _makepoint
add esp,12
lea esi,(-100)[ebp]
sub esp,8
mov edi,esp
mov ecx,8
rep movsb
lea esi,(-68)[ebp]
sub esp,8
mov edi,esp
mov ecx,8
rep movsb
lea edi,(-108)[ebp]
push edi
call _addpoint
add esp,20
lea esi,(-108)[ebp]
sub esp,8
mov edi,esp
mov ecx,8
rep movsb
lea esi,(-92)[ebp]
sub esp,8
mov edi,esp
mov ecx,8
rep movsb
lea edi,(-52)[ebp]
push edi
call _makerect
add esp,20
mov dword ptr (-4)[ebp],0
jmp L64
L61:
mov edi,dword ptr (-4)[ebp]
lea edi,[edi*8]
mov esi,dword ptr (-32)[ebp][edi]
push esi
mov edi,dword ptr (-36)[ebp][edi]
push edi
lea edi,(-60)[ebp]
push edi
call _makepoint
add esp,12
mov edi,dword ptr (-56)[ebp]
push edi
mov edi,dword ptr (-4)[ebp]
mov edi,dword ptr (-36)[ebp][edi*8]
push edi
lea edi,(L65)
push edi
call _printf
add esp,12
lea esi,(-52)[ebp]
sub esp,16
mov edi,esp
mov ecx,16
rep movsb
lea esi,(-60)[ebp]
sub esp,8
mov edi,esp
mov ecx,8
rep movsb
call _ptinrect
add esp,24
cmp eax,0
jne L68
lea edi,(L70)
push edi
call _printf
add esp,4
L68:
mov edi,dword ptr (-40)[ebp]
push edi
mov edi,dword ptr (-44)[ebp]
push edi
mov edi,dword ptr (-48)[ebp]
push edi
mov edi,dword ptr (-52)[ebp]
push edi
lea edi,(L71)
push edi
call _printf
add esp,20
L62:
inc dword ptr (-4)[ebp]
L64:
mov edi,dword ptr (-4)[ebp]
cmp edi,4
jb L61
lea esi,(_y)
sub esp,4
mov edi,esp
mov ecx,4
rep movsb
call _odd
add esp,4
push 0
call _exit
add esp,4
mov eax,0
L57:
mov esp,ebp
pop ebp
pop edi
pop esi
pop ebx
ret
_TEXT ends
extrn _exit:near
_TEXT segment
_TEXT ends
extrn _printf:near
_TEXT segment
_TEXT ends
_TEXT segment
align 1
L71 label byte
db 119
db 105
db 116
db 104
db 105
db 110
db 32
db 91
db 37
db 100
db 44
db 37
db 100
db 59
db 32
db 37
db 100
db 44
db 37
db 100
db 93
db 10
db 0
align 1
L70 label byte
db 110
db 111
db 116
db 32
db 0
align 1
L65 label byte
db 40
db 37
db 100
db 44
db 37
db 100
db 41
db 32
db 105
db 115
db 32
db 0
align 1
L56 label byte
db 37
db 115
db 10
db 0
_TEXT ends
end

View file

@ -0,0 +1,76 @@
b = 0x8
f = 0xc
n = 0xa
r = 0xd
t = 0x9
v = 0xb
x = 0x78
f:
x = 0
x = 1
x = 2
x = 2
x = 2
x = 2
x = 2
x = 7
x = 8
x = 9
x = 9
x = 9
x = 9
x = 9
x = 9
x = 9
x = 16
x = 17
x = 18
x = 19
x = 20
g:
1 1
1 2
2 3
2 4
2 5
3 6
d 6
3 7
d 7
3 8
d 8
d 9
d 10
h:
i = 8
i = 16
i = 120
i = 128
i = 248
i = 264
i = 272
i = 280
i = 288
i = 296
i = 304
i = 312
488 defaults
x = 0x1000000
x = 0x2000000
x = 0x3000000
x = 0x4000000
x = 0x5000000
x = 0x6000000 (default)
x = 0x7000000 (default)
0
1
2
3
4
5
0
1
2
3
4
5

View file

@ -0,0 +1,5 @@
tst/switch.c:55: warning: missing return value
tst/switch.c:73: warning: missing return value
tst/switch.c:97: warning: missing return value
tst/switch.c:112: warning: missing return value
tst/switch.c:137: warning: missing return value

View file

@ -0,0 +1,960 @@
.486
.model flat
extrn __fltused:near
extrn __ftol:near
public _main
_TEXT segment
_main:
push ebx
push esi
push edi
push ebp
mov ebp,esp
sub esp,8
lea edi,(L6)
mov dword ptr (-4)[ebp],edi
jmp L5
L2:
mov edi,dword ptr (-4)[ebp]
movsx edi,byte ptr [edi]
push edi
call _backslash
add esp,4
push eax
mov edi,dword ptr (-4)[ebp]
movsx edi,byte ptr [edi]
push edi
lea edi,(L7)
push edi
call _printf
add esp,12
L3:
inc dword ptr (-4)[ebp]
L5:
mov edi,dword ptr (-4)[ebp]
movsx edi,byte ptr [edi]
cmp edi,0
jne L2
call _f
add esp,0
call _g
add esp,0
call _h
add esp,0
mov dword ptr (-8)[ebp],16777216
jmp L11
L8:
mov edi,dword ptr (-8)[ebp]
push edi
call _big
add esp,4
L9:
add dword ptr (-8)[ebp],16777216
L11:
mov edi,dword ptr (-8)[ebp]
and edi,117440512
cmp edi,0
jne L8
call _limit
add esp,0
mov eax,0
L1:
mov esp,ebp
pop ebp
pop edi
pop esi
pop ebx
ret
public _backslash
_backslash:
push ebx
push esi
push edi
push ebp
mov ebp,esp
mov edi,dword ptr (20)[ebp]
cmp edi,102
je L16
cmp edi,102
jg L22
L21:
cmp dword ptr (20)[ebp],98
je L15
jmp L13
L22:
mov edi,dword ptr (20)[ebp]
cmp edi,110
je L17
cmp edi,110
jl L13
L23:
mov edi,dword ptr (20)[ebp]
cmp edi,114
je L18
cmp edi,116
je L19
cmp edi,118
je L20
jmp L13
L15:
mov eax,8
jmp L12
L16:
mov eax,12
jmp L12
L17:
mov eax,10
jmp L12
L18:
mov eax,13
jmp L12
L19:
mov eax,9
jmp L12
L20:
mov eax,11
jmp L12
L13:
mov eax,dword ptr (20)[ebp]
L12:
mov esp,ebp
pop ebp
pop edi
pop esi
pop ebx
ret
public _f
_f:
push ebx
push esi
push edi
push ebp
mov ebp,esp
sub esp,12
mov dword ptr (-8)[ebp],0
lea edi,(L25)
push edi
call _printf
add esp,4
mov dword ptr (-4)[ebp],0
L26:
mov edi,dword ptr (-4)[ebp]
mov dword ptr (-12)[ebp],edi
mov edi,dword ptr (-4)[ebp]
cmp edi,1
jl L30
cmp edi,20
jg L30
jmp dword ptr (L42-4)[edi*4]
_TEXT ends
_TEXT segment
align 4
L42 label byte
dd L32
dd L33
dd L30
dd L30
dd L30
dd L30
dd L34
dd L35
dd L36
dd L30
dd L30
dd L30
dd L30
dd L30
dd L30
dd L37
dd L38
dd L39
dd L40
dd L41
_TEXT ends
_TEXT segment
L32:
mov edi,dword ptr (-4)[ebp]
mov dword ptr (-8)[ebp],edi
jmp L31
L33:
mov edi,dword ptr (-4)[ebp]
mov dword ptr (-8)[ebp],edi
jmp L31
L34:
mov edi,dword ptr (-4)[ebp]
mov dword ptr (-8)[ebp],edi
jmp L31
L35:
mov edi,dword ptr (-4)[ebp]
mov dword ptr (-8)[ebp],edi
jmp L31
L36:
mov edi,dword ptr (-4)[ebp]
mov dword ptr (-8)[ebp],edi
jmp L31
L37:
mov edi,dword ptr (-4)[ebp]
mov dword ptr (-8)[ebp],edi
jmp L31
L38:
mov edi,dword ptr (-4)[ebp]
mov dword ptr (-8)[ebp],edi
jmp L31
L39:
mov edi,dword ptr (-4)[ebp]
mov dword ptr (-8)[ebp],edi
jmp L31
L40:
mov edi,dword ptr (-4)[ebp]
mov dword ptr (-8)[ebp],edi
jmp L31
L41:
mov edi,dword ptr (-4)[ebp]
mov dword ptr (-8)[ebp],edi
L30:
L31:
mov edi,dword ptr (-8)[ebp]
push edi
lea edi,(L44)
push edi
call _printf
add esp,8
L27:
inc dword ptr (-4)[ebp]
cmp dword ptr (-4)[ebp],20
jle L26
mov eax,0
L24:
mov esp,ebp
pop ebp
pop edi
pop esi
pop ebx
ret
public _g
_g:
push ebx
push esi
push edi
push ebp
mov ebp,esp
sub esp,4
lea edi,(L46)
push edi
call _printf
add esp,4
mov dword ptr (-4)[ebp],1
L47:
mov edi,dword ptr (-4)[ebp]
cmp edi,1001
jl L64
cmp edi,1004
jg L65
jmp dword ptr (L66-4004)[edi*4]
_TEXT ends
_TEXT segment
align 4
L66 label byte
dd L60
dd L60
dd L60
dd L60
_TEXT ends
_TEXT segment
L64:
mov edi,dword ptr (-4)[ebp]
cmp edi,1
jl L51
cmp edi,8
jg L51
jmp dword ptr (L68-4)[edi*4]
_TEXT ends
_TEXT segment
align 4
L68 label byte
dd L53
dd L53
dd L55
dd L55
dd L55
dd L57
dd L57
dd L57
_TEXT ends
_TEXT segment
L65:
mov edi,dword ptr (-4)[ebp]
cmp edi,3001
jl L51
cmp edi,3004
jg L51
jmp dword ptr (L70-12004)[edi*4]
_TEXT ends
_TEXT segment
align 4
L70 label byte
dd L62
dd L62
dd L62
dd L62
_TEXT ends
_TEXT segment
L53:
mov edi,dword ptr (-4)[ebp]
push edi
lea edi,(L54)
push edi
call _printf
add esp,8
jmp L52
L55:
mov edi,dword ptr (-4)[ebp]
push edi
lea edi,(L56)
push edi
call _printf
add esp,8
jmp L52
L57:
mov edi,dword ptr (-4)[ebp]
push edi
lea edi,(L58)
push edi
call _printf
add esp,8
L51:
mov edi,dword ptr (-4)[ebp]
push edi
lea edi,(L59)
push edi
call _printf
add esp,8
jmp L52
L60:
mov edi,dword ptr (-4)[ebp]
push edi
lea edi,(L61)
push edi
call _printf
add esp,8
jmp L52
L62:
mov edi,dword ptr (-4)[ebp]
push edi
lea edi,(L63)
push edi
call _printf
add esp,8
L52:
L48:
inc dword ptr (-4)[ebp]
cmp dword ptr (-4)[ebp],10
jle L47
mov eax,0
L45:
mov esp,ebp
pop ebp
pop edi
pop esi
pop ebx
ret
public _h
_h:
push ebx
push esi
push edi
push ebp
mov ebp,esp
sub esp,8
mov dword ptr (-8)[ebp],0
lea edi,(L73)
push edi
call _printf
add esp,4
mov dword ptr (-4)[ebp],1
L74:
mov edi,dword ptr (-4)[ebp]
cmp edi,264
je L86
cmp edi,264
jg L94
L93:
mov edi,dword ptr (-4)[ebp]
cmp edi,120
je L84
cmp edi,120
jg L96
L95:
mov edi,dword ptr (-4)[ebp]
cmp edi,8
je L83
cmp edi,8
jl L78
L97:
cmp dword ptr (-4)[ebp],16
je L82
jmp L78
L96:
mov edi,dword ptr (-4)[ebp]
cmp edi,128
je L80
cmp edi,128
jl L78
L98:
cmp dword ptr (-4)[ebp],248
je L87
jmp L78
L94:
mov edi,dword ptr (-4)[ebp]
cmp edi,288
je L91
cmp edi,288
jg L100
L99:
mov edi,dword ptr (-4)[ebp]
cmp edi,272
je L88
cmp edi,272
jl L78
L101:
cmp dword ptr (-4)[ebp],280
je L85
jmp L78
L100:
mov edi,dword ptr (-4)[ebp]
cmp edi,304
je L89
cmp edi,304
jg L103
L102:
cmp dword ptr (-4)[ebp],296
je L90
jmp L78
L103:
cmp dword ptr (-4)[ebp],312
je L92
jmp L78
L78:
inc dword ptr (-8)[ebp]
jmp L75
L80:
mov edi,dword ptr (-4)[ebp]
push edi
lea edi,(L81)
push edi
call _printf
add esp,8
jmp L79
L82:
mov edi,dword ptr (-4)[ebp]
push edi
lea edi,(L81)
push edi
call _printf
add esp,8
jmp L79
L83:
mov edi,dword ptr (-4)[ebp]
push edi
lea edi,(L81)
push edi
call _printf
add esp,8
jmp L79
L84:
mov edi,dword ptr (-4)[ebp]
push edi
lea edi,(L81)
push edi
call _printf
add esp,8
jmp L79
L85:
mov edi,dword ptr (-4)[ebp]
push edi
lea edi,(L81)
push edi
call _printf
add esp,8
jmp L79
L86:
mov edi,dword ptr (-4)[ebp]
push edi
lea edi,(L81)
push edi
call _printf
add esp,8
jmp L79
L87:
mov edi,dword ptr (-4)[ebp]
push edi
lea edi,(L81)
push edi
call _printf
add esp,8
jmp L79
L88:
mov edi,dword ptr (-4)[ebp]
push edi
lea edi,(L81)
push edi
call _printf
add esp,8
jmp L79
L89:
mov edi,dword ptr (-4)[ebp]
push edi
lea edi,(L81)
push edi
call _printf
add esp,8
jmp L79
L90:
mov edi,dword ptr (-4)[ebp]
push edi
lea edi,(L81)
push edi
call _printf
add esp,8
jmp L79
L91:
mov edi,dword ptr (-4)[ebp]
push edi
lea edi,(L81)
push edi
call _printf
add esp,8
jmp L79
L92:
mov edi,dword ptr (-4)[ebp]
push edi
lea edi,(L81)
push edi
call _printf
add esp,8
L79:
L75:
inc dword ptr (-4)[ebp]
cmp dword ptr (-4)[ebp],500
jle L74
mov edi,dword ptr (-8)[ebp]
push edi
lea edi,(L104)
push edi
call _printf
add esp,8
mov eax,0
L72:
mov esp,ebp
pop ebp
pop edi
pop esi
pop ebx
ret
public _big
_big:
push ebx
push esi
push edi
push ebp
mov ebp,esp
sub esp,4
mov edi,dword ptr (20)[ebp]
and edi,06000000H
mov dword ptr (-4)[ebp],edi
mov edi,dword ptr (-4)[ebp]
cmp edi,33554432
je L111
cmp edi,33554432
jg L115
L114:
mov edi,dword ptr (-4)[ebp]
cmp edi,-2
je L109
cmp edi,-1
je L109
cmp edi,0
je L109
jmp L106
L115:
mov edi,dword ptr (-4)[ebp]
cmp edi,67108864
je L112
jmp L106
L109:
mov edi,dword ptr (20)[ebp]
push edi
lea edi,(L110)
push edi
call _printf
add esp,8
jmp L107
L111:
mov edi,dword ptr (20)[ebp]
push edi
lea edi,(L110)
push edi
call _printf
add esp,8
jmp L107
L112:
mov edi,dword ptr (20)[ebp]
push edi
lea edi,(L110)
push edi
call _printf
add esp,8
jmp L107
L106:
mov edi,dword ptr (20)[ebp]
push edi
lea edi,(L113)
push edi
call _printf
add esp,8
L107:
mov eax,0
L105:
mov esp,ebp
pop ebp
pop edi
pop esi
pop ebx
ret
public _limit
_limit:
push ebx
push esi
push edi
push ebp
mov ebp,esp
sub esp,4
mov dword ptr (-4)[ebp],-2147483648
L117:
mov edi,dword ptr (-4)[ebp]
mov esi,-2147483648
cmp edi,-2147483648
jl L121
cmp edi,-2147483644
jg L121
lea edi,[edi*4]
lea esi,[esi*4]
sub edi,esi
jmp dword ptr (L134)[edi]
_TEXT ends
_TEXT segment
align 4
L134 label byte
dd L123
dd L125
dd L127
dd L129
dd L131
_TEXT ends
_TEXT segment
L123:
lea edi,(L124)
push edi
call _printf
add esp,4
jmp L122
L125:
lea edi,(L126)
push edi
call _printf
add esp,4
jmp L122
L127:
lea edi,(L128)
push edi
call _printf
add esp,4
jmp L122
L129:
lea edi,(L130)
push edi
call _printf
add esp,4
jmp L122
L131:
lea edi,(L132)
push edi
call _printf
add esp,4
jmp L122
L121:
lea edi,(L133)
push edi
call _printf
add esp,4
L122:
L118:
inc dword ptr (-4)[ebp]
cmp dword ptr (-4)[ebp],-2147483643
jle L117
mov dword ptr (-4)[ebp],2147483647
L135:
mov edi,dword ptr (-4)[ebp]
mov esi,2147483643
cmp edi,2147483643
jl L139
cmp edi,2147483647
jg L139
lea edi,[edi*4]
lea esi,[esi*4]
sub edi,esi
jmp dword ptr (L146)[edi]
_TEXT ends
_TEXT segment
align 4
L146 label byte
dd L145
dd L144
dd L143
dd L142
dd L141
_TEXT ends
_TEXT segment
L141:
lea edi,(L124)
push edi
call _printf
add esp,4
jmp L140
L142:
lea edi,(L126)
push edi
call _printf
add esp,4
jmp L140
L143:
lea edi,(L128)
push edi
call _printf
add esp,4
jmp L140
L144:
lea edi,(L130)
push edi
call _printf
add esp,4
jmp L140
L145:
lea edi,(L132)
push edi
call _printf
add esp,4
jmp L140
L139:
lea edi,(L133)
push edi
call _printf
add esp,4
L140:
L136:
dec dword ptr (-4)[ebp]
cmp dword ptr (-4)[ebp],2147483642
jge L135
mov eax,0
L116:
mov esp,ebp
pop ebp
pop edi
pop esi
pop ebx
ret
_TEXT ends
extrn _printf:near
_TEXT segment
_TEXT ends
_TEXT segment
align 1
L133 label byte
db 53
db 10
db 0
align 1
L132 label byte
db 52
db 10
db 0
align 1
L130 label byte
db 51
db 10
db 0
align 1
L128 label byte
db 50
db 10
db 0
align 1
L126 label byte
db 49
db 10
db 0
align 1
L124 label byte
db 48
db 10
db 0
align 1
L113 label byte
db 120
db 32
db 61
db 32
db 48
db 120
db 37
db 120
db 32
db 40
db 100
db 101
db 102
db 97
db 117
db 108
db 116
db 41
db 10
db 0
align 1
L110 label byte
db 120
db 32
db 61
db 32
db 48
db 120
db 37
db 120
db 10
db 0
align 1
L104 label byte
db 37
db 100
db 32
db 100
db 101
db 102
db 97
db 117
db 108
db 116
db 115
db 10
db 0
align 1
L81 label byte
db 105
db 32
db 61
db 32
db 37
db 100
db 10
db 0
align 1
L73 label byte
db 104
db 58
db 10
db 0
align 1
L63 label byte
db 54
db 32
db 37
db 100
db 10
db 0
align 1
L61 label byte
db 53
db 32
db 37
db 100
db 10
db 0
align 1
L59 label byte
db 100
db 32
db 37
db 100
db 10
db 0
align 1
L58 label byte
db 51
db 32
db 37
db 100
db 10
db 0
align 1
L56 label byte
db 50
db 32
db 37
db 100
db 10
db 0
align 1
L54 label byte
db 49
db 32
db 37
db 100
db 10
db 0
align 1
L46 label byte
db 103
db 58
db 10
db 0
align 1
L44 label byte
db 120
db 32
db 61
db 32
db 37
db 100
db 10
db 0
align 1
L25 label byte
db 102
db 58
db 10
db 0
align 1
L7 label byte
db 37
db 99
db 32
db 61
db 32
db 48
db 120
db 37
db 120
db 10
db 0
align 1
L6 label byte
db 98
db 102
db 110
db 114
db 116
db 118
db 120
db 0
_TEXT ends
end

View file

@ -0,0 +1,74 @@
5 a
2 and
5 buf
16 c
8 char
1 compare
4 cond
5 count
1 d
1 die
3 else
1 entry
1 eof
4 err
1 error
1 exit
1 folded
1 for
1 free
1 frequencies
1 frequency
1 get
2 getchar
3 getword
14 if
2 in
1 index
1 input
1 install
8 int
1 into
1 is
4 isletter
1 it
1 itself
5 left
1 letter
7 lookup
1 main
2 malloc
1 message
2 n
1 necessary
12 next
9 node
4 of
1 on
1 or
1 otherwise
2 out
8 p
3 print
2 printf
16 return
5 right
4 root
25 s
2 storage
3 strcmp
1 strcpy
1 strlen
8 struct
1 structures
2 subtree
1 t
5 tprint
9 tree
1 uses
1 version
1 wf
3 while
21 word
9 words
2 z

View file

@ -0,0 +1,2 @@
tst/wf1.c:29: warning: missing return value
tst/wf1.c:87: warning: missing return value

View file

@ -0,0 +1,451 @@
.486
.model flat
extrn __fltused:near
extrn __ftol:near
public _main
_TEXT segment
_main:
push ebx
push esi
push edi
push ebp
mov ebp,esp
sub esp,24
mov dword ptr (-24)[ebp],0
mov dword ptr (_next),0
jmp L3
L2:
lea edi,(-24)[ebp]
push edi
lea edi,(-20)[ebp]
push edi
call _lookup
add esp,8
inc dword ptr [eax]
L3:
lea edi,(-20)[ebp]
push edi
call _getword
add esp,4
cmp eax,0
jne L2
mov edi,dword ptr (-24)[ebp]
push edi
call _tprint
add esp,4
mov eax,0
L1:
mov esp,ebp
pop ebp
pop edi
pop esi
pop ebx
ret
public _err
_err:
push ebx
push esi
push edi
push ebp
mov ebp,esp
mov edi,dword ptr (20)[ebp]
push edi
lea edi,(L6)
push edi
call _printf
add esp,8
push 1
call _exit
add esp,4
mov eax,0
L5:
mov esp,ebp
pop ebp
pop edi
pop esi
pop ebx
ret
public _getword
_getword:
push ebx
push esi
push edi
push ebp
mov ebp,esp
sub esp,8
L8:
L9:
call _getchar
add esp,0
mov dword ptr (-4)[ebp],eax
cmp eax,-1
je L11
mov edi,dword ptr (-4)[ebp]
push edi
call _isletter
add esp,4
cmp eax,0
je L8
L11:
mov edi,dword ptr (20)[ebp]
mov dword ptr (-8)[ebp],edi
jmp L15
L12:
mov edi,dword ptr (-8)[ebp]
lea esi,(1)[edi]
mov dword ptr (-8)[ebp],esi
mov esi,dword ptr (-4)[ebp]
mov ebx,esi
mov byte ptr [edi],bl
L13:
call _getchar
add esp,0
mov dword ptr (-4)[ebp],eax
L15:
mov edi,dword ptr (-4)[ebp]
push edi
call _isletter
add esp,4
mov dword ptr (-4)[ebp],eax
cmp eax,0
jne L12
mov edi,dword ptr (-8)[ebp]
mov byte ptr [edi],0
mov edi,dword ptr (-8)[ebp]
mov esi,dword ptr (20)[ebp]
cmp edi,esi
jbe L16
mov eax,1
jmp L7
L16:
mov eax,0
L7:
mov esp,ebp
pop ebp
pop edi
pop esi
pop ebx
ret
public _isletter
_isletter:
push ebx
push esi
push edi
push ebp
mov ebp,esp
mov edi,dword ptr (20)[ebp]
cmp edi,65
jl L19
cmp edi,90
jg L19
add dword ptr (20)[ebp],32
L19:
mov edi,dword ptr (20)[ebp]
cmp edi,97
jl L21
cmp edi,122
jg L21
mov eax,dword ptr (20)[ebp]
jmp L18
L21:
mov eax,0
L18:
mov esp,ebp
pop ebp
pop edi
pop esi
pop ebx
ret
public _lookup
_lookup:
push ebx
push esi
push edi
push ebp
mov ebp,esp
sub esp,4
mov edi,dword ptr (24)[ebp]
mov edi,dword ptr [edi]
cmp edi,0
je L24
mov edi,dword ptr (24)[ebp]
mov edi,dword ptr [edi]
mov edi,dword ptr (12)[edi]
push edi
mov edi,dword ptr (20)[ebp]
push edi
call _strcmp
add esp,8
mov dword ptr (-4)[ebp],eax
cmp dword ptr (-4)[ebp],0
jge L26
mov edi,dword ptr (24)[ebp]
mov edi,dword ptr [edi]
lea edi,(4)[edi]
push edi
mov edi,dword ptr (20)[ebp]
push edi
call _lookup
add esp,8
mov edi,eax
jmp L23
L26:
cmp dword ptr (-4)[ebp],0
jle L28
mov edi,dword ptr (24)[ebp]
mov edi,dword ptr [edi]
lea edi,(8)[edi]
push edi
mov edi,dword ptr (20)[ebp]
push edi
call _lookup
add esp,8
mov edi,eax
jmp L23
L28:
mov edi,dword ptr (24)[ebp]
mov eax,dword ptr [edi]
jmp L23
L24:
cmp dword ptr (_next),2000
jl L30
lea edi,(L32)
push edi
call _err
add esp,4
L30:
mov edi,dword ptr (_next)
sal edi,4
mov dword ptr (_words)[edi],0
mov edi,dword ptr (_next)
sal edi,4
mov dword ptr (_words+8)[edi],0
mov dword ptr (_words+4)[edi],0
mov edi,dword ptr (20)[ebp]
push edi
call _strlen
add esp,4
lea edi,(1)[eax]
push edi
call _malloc
add esp,4
mov esi,dword ptr (_next)
sal esi,4
mov dword ptr (_words+12)[esi],eax
mov edi,dword ptr (_next)
sal edi,4
mov edi,dword ptr (_words+12)[edi]
cmp edi,0
jne L36
lea edi,(L39)
push edi
call _err
add esp,4
L36:
mov edi,dword ptr (20)[ebp]
push edi
mov edi,dword ptr (_next)
sal edi,4
mov edi,dword ptr (_words+12)[edi]
push edi
call _strcpy
add esp,8
mov edi,dword ptr (_next)
lea esi,(1)[edi]
mov dword ptr (_next),esi
sal edi,4
lea edi,(_words)[edi]
mov esi,dword ptr (24)[ebp]
mov dword ptr [esi],edi
mov eax,edi
L23:
mov esp,ebp
pop ebp
pop edi
pop esi
pop ebx
ret
public _tprint
_tprint:
push ebx
push esi
push edi
push ebp
mov ebp,esp
mov edi,dword ptr (20)[ebp]
cmp edi,0
je L42
mov edi,dword ptr (20)[ebp]
mov edi,dword ptr (4)[edi]
push edi
call _tprint
add esp,4
mov edi,dword ptr (20)[ebp]
mov esi,dword ptr (12)[edi]
push esi
mov edi,dword ptr [edi]
push edi
lea edi,(L44)
push edi
call _printf
add esp,12
mov edi,dword ptr (20)[ebp]
mov edi,dword ptr (8)[edi]
push edi
call _tprint
add esp,4
L42:
mov eax,0
L41:
mov esp,ebp
pop ebp
pop edi
pop esi
pop ebx
ret
public _strcmp
_strcmp:
push ebx
push esi
push edi
push ebp
mov ebp,esp
jmp L47
L46:
mov edi,dword ptr (20)[ebp]
lea esi,(1)[edi]
mov dword ptr (20)[ebp],esi
movsx edi,byte ptr [edi]
cmp edi,0
jne L49
mov eax,0
jmp L45
L49:
inc dword ptr (24)[ebp]
L47:
mov edi,dword ptr (20)[ebp]
movsx edi,byte ptr [edi]
mov esi,dword ptr (24)[ebp]
movsx esi,byte ptr [esi]
cmp edi,esi
je L46
mov edi,dword ptr (20)[ebp]
movsx edi,byte ptr [edi]
cmp edi,0
jne L51
mov eax,-1
jmp L45
L51:
mov edi,dword ptr (24)[ebp]
movsx edi,byte ptr [edi]
cmp edi,0
jne L53
mov eax,1
jmp L45
L53:
mov edi,dword ptr (20)[ebp]
movsx edi,byte ptr [edi]
mov esi,dword ptr (24)[ebp]
movsx esi,byte ptr [esi]
mov eax,edi
sub eax,esi
L45:
mov esp,ebp
pop ebp
pop edi
pop esi
pop ebx
ret
_TEXT ends
extrn _strcpy:near
_TEXT segment
_TEXT ends
extrn _strlen:near
_TEXT segment
_TEXT ends
extrn _malloc:near
_TEXT segment
_TEXT ends
extrn _getchar:near
_TEXT segment
_TEXT ends
extrn _exit:near
_TEXT segment
_TEXT ends
extrn _printf:near
_TEXT segment
_TEXT ends
_DATA segment
public _next
align 4
_next label byte
db 4 dup (0)
public _words
align 4
_words label byte
db 32000 dup (0)
_DATA ends
_TEXT segment
align 1
L44 label byte
db 37
db 100
db 9
db 37
db 115
db 10
db 0
align 1
L39 label byte
db 111
db 117
db 116
db 32
db 111
db 102
db 32
db 119
db 111
db 114
db 100
db 32
db 115
db 116
db 111
db 114
db 97
db 103
db 101
db 0
align 1
L32 label byte
db 111
db 117
db 116
db 32
db 111
db 102
db 32
db 110
db 111
db 100
db 101
db 32
db 115
db 116
db 111
db 114
db 97
db 103
db 101
db 0
align 1
L6 label byte
db 63
db 32
db 37
db 115
db 10
db 0
_TEXT ends
end

View file

@ -0,0 +1,10 @@
a
b
load
negate
push 5
c
load
multiply
add
store

View file

@ -0,0 +1,3 @@
tst/yacc.c:345: warning: missing return value
tst/yacc.c:349: warning: missing return value
tst/yacc.c:359: warning: missing return value

File diff suppressed because it is too large Load diff