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.