pike.git/
src/
code/
amd64.c
Branch:
Tag:
Non-build tags
All tags
No tags
2014-12-04
2014-12-04 19:23:47 by Henrik Grubbström (Grubba) <grubba@grubba.org>
6cb8064b73717055c0c3a8e09fd8eb06ba0ff184 (
8
lines) (+
4
/-
4
)
[
Show
|
Annotate
]
Branch:
bill/master_archive_support
[amd64]
Some constant folding in F_POS_INT_INDEX.
2364:
mov_mem_reg( sp_reg, -1*sizeof(struct svalue)+8, REG_RDX ); /* u.array */ /* -> arr[sizeof(arr)-b] */ mov_mem32_reg( REG_RDX, OFFSETOF(array,size), REG_RCX );
-
mov_imm_reg( b, REG_RBX);
-
cmp_
reg
_
reg
( REG_RCX,
REG_RBX
);
-
jge
( &label_A ); /*
b
>
=
RBX
, index outside array */
-
shl
_
reg_
imm( REG_RBX
, 4
);
+
cmp_
reg32
_
imm
( REG_RCX,
b
);
+
jle
( &label_A ); /*
RCX
<
=
b
, index outside array */
+
mov
_
imm_
reg(
b * sizeof(struct svalue),
REG_RBX);
add_reg_mem( REG_RBX, REG_RDX, OFFSETOF(array,item) ); /* This overwrites the array. */