hotspot/src/cpu/sparc/vm/templateTable_sparc.cpp
void TemplateTable::irem() {
{- -------------------------------------------
(1) (assert) (See: TemplateTable::transition())
---------------------------------------- -}
transition(itos, itos);
{- -------------------------------------------
(1) コード生成:
「divosor を O2 レジスタに待避しておく」
---------------------------------------- -}
__ mov(Otos_i, O2); // save divisor
{- -------------------------------------------
(1) コード生成:
「X mod Y = X - (X/Y)*Y なので, その通りに計算する.」
(なおコメントによると, このコードは idiv() が
dividend を O1 レジスタに残すことを想定している, とのこと)
---------------------------------------- -}
idiv(); // %%%% Hack: exploits fact that idiv leaves dividend in O1
__ smul(Otos_i, O2, Otos_i);
__ sub(O1, Otos_i, Otos_i);
}
This document is available under the GNU GENERAL PUBLIC LICENSE Version 2.