diff options
| author | bellard <bellard> | 2002-09-08 22:06:11 +0000 |
|---|---|---|
| committer | bellard <bellard> | 2002-09-08 22:06:11 +0000 |
| commit | 3748975feb38e1f1ad40ddc007459fd2f051988d (patch) | |
| tree | 464d5a8e236bd776a253cfddf57247a45c6f7a20 /i386-gen.c | |
| parent | 1cb355747a93bd81397f4763fd2f7eb8a193ebea (diff) | |
| download | tinycc-3748975feb38e1f1ad40ddc007459fd2f051988d.tar.gz tinycc-3748975feb38e1f1ad40ddc007459fd2f051988d.tar.bz2 | |
trivial jump size optimization
Diffstat (limited to 'i386-gen.c')
| -rw-r--r-- | i386-gen.c | 11 |
1 files changed, 9 insertions, 2 deletions
@@ -233,7 +233,7 @@ void load(int r, SValue *sv) } else if (v == VT_JMP || v == VT_JMPI) { t = v & 1; oad(0xb8 + r, t); /* mov $1, r */ - oad(0xe9, 5); /* jmp after */ + o(0x05eb); /* jmp after */ gsym(fc); oad(0xb8 + r, t ^ 1); /* mov $0, r */ } else if (v != r) { @@ -479,7 +479,14 @@ int gjmp(int t) /* generate a jump to a fixed address */ void gjmp_addr(int a) { - oad(0xe9, a - ind - 5); + int r; + r = a - ind - 2; + if (r == (char)r) { + g(0xeb); + g(r); + } else { + oad(0xe9, a - ind - 5); + } } /* generate a test. set 'inv' to invert test. Stack entry is popped */ |
