hotspot/src/cpu/x86/vm/assembler_x86.cpp
void MacroAssembler::sign_extend_byte(Register reg) {
{- -------------------------------------------
(1) コード生成:
* movsbl 命令が使える環境の場合:
「movsbl(movsx) 命令を使う」
* そうではない場合:
「shll(shl) で 24bit 左シフトした後, sarl(sar) で上位 32bit を 0 クリアしながら 24bit 算術右シフト」
---------------------------------------- -}
if (LP64_ONLY(true ||) (VM_Version::is_P6() && reg->has_byte_register())) {
movsbl(reg, reg); // movsxb
} else {
shll(reg, 24);
sarl(reg, 24);
}
}
This document is available under the GNU GENERAL PUBLIC LICENSE Version 2.