diff options
| author | Pavlas, Zdenek <zden3k@gmail.com> | 2016-09-30 07:29:38 -0700 |
|---|---|---|
| committer | Pavlas, Zdenek <zden3k@gmail.com> | 2016-09-30 07:33:20 -0700 |
| commit | e238e6521bcbbc3a4ff6d795564b8f2d322de349 (patch) | |
| tree | 137d4b6fc7ab60c010e24050db67f159aed525b8 /i386-gen.c | |
| parent | fc0fc6aba3d8fce415325b76fcd1499365d448ea (diff) | |
| download | tinycc-e238e6521bcbbc3a4ff6d795564b8f2d322de349.tar.gz tinycc-e238e6521bcbbc3a4ff6d795564b8f2d322de349.tar.bz2 | |
gtst_addr(): short conditional jumps (i386, x86_64)
Diffstat (limited to 'i386-gen.c')
| -rw-r--r-- | i386-gen.c | 13 |
1 files changed, 13 insertions, 0 deletions
@@ -695,6 +695,19 @@ ST_FUNC void gjmp_addr(int a) } } +ST_FUNC void gtst_addr(int inv, int a) +{ + inv ^= (vtop--)->c.i; + a -= ind + 2; + if (a == (char)a) { + g(inv - 32); + g(a); + } else { + g(0x0f); + oad(inv - 16, a - 4); + } +} + /* generate a test. set 'inv' to invert test. Stack entry is popped */ ST_FUNC int gtst(int inv, int t) { |
