1198,1204c
      rg.shift 'cop'
#     rg.shift 'sym'
#      sl.slp 0
      sl.slp
.
1193,1196c
      rg.shift 'sp'
#     @sp = sp
      @sp = rg['sp']
      @irep = irep
.
1191c
#     @pc = pc + 1
#     rg['pc', -1] += 1
#     rg.delete_at('pc', 1)
      rg.shift 'pc'
      rg['pc'] = rg['pc', 1]
      @pc = rg['pc']
.
1172,1189c
#      if fl.empty? # || ! ise.empty?
#       rg['ctr', 1] -= 1 if 0 < rg['ctr', 1]
#
#       if ise.empty?
#
#         @flag[0] >>= 1
##        @flag[0] >>= (1 - (thi <=> 0))
.
1169c
        else
          sl.slp
          next
        end     # fl[0].empty?
.
1167a
#         else
#           printf("Unkown code %s \n", OPTABLE_SYM[get_opcode(cop)])
#           printf("Unkown code %s \n", OPTABLE_SYM[imem.get_opcode(cop)])
.
1138,1166c
#             @stack[@sp + a] = @stack[@sp + a].send(mid, *args)
              @stack[a] = @stack[a].send(mid, *args)
            end

            # RETURN Raで呼び出し元のメソッドに戻る。Raが戻り値になる
          when :RETURN
            if @cp == 0 then
#             return @stack[@sp + getarg_a(cop)]
#             return @stack[sp + lpl.getarg_a(cop)]
#             return @stack[imem.getarg_a(rg['cop'])]
              break @stack[imem.getarg_a(rg['cop'])]
            else
#             @stack[@sp] = @stack[@sp + getarg_a(cop)]
#             @stack[sp] = @stack[sp + lpl.getarg_a(cop)]
              @stack[0] = @stack[imem.getarg_a(rg['cop'])]
              @cp -= 1
#             @irep = @callinfo[@cp]
              irep = @callinfo[@cp]
#             @irepid = @irep.id
              @irepid = irep.id
              @cp -= 1
#             @pc = @callinfo[@cp]
#             pc = @callinfo[@cp] # - 1
#             rg['pc', -1] = @callinfo[@cp]
              rg['pc', -1] = @callinfo[@cp] + 1         # bagu syuusei
              @cp -= 1
#             @sp = @callinfo[@cp]
#             sp = @callinfo[@cp]
#             rg['sp'] = @callinfo[@cp]
              rg['sp', -1] = @callinfo[@cp]
.
1134,1135c
#             next
            else
              args = []
              n.times do |i|
#               args.push @stack[@sp + a + i + 1]
                args<< @stack[a + i + 1]  # p 
.
1126,1132c
#             @pc = 0
              rg['pc', -1] = 0
#             @irep = newirep
              irep = newirep
#             @irepid = @irep.id
              @irepid = irep.id
.
1119,1124c
#             @sp += a
              rg['sp', -1] = rg['sp'] + a
.
1115,1117c
            # SEND Ra, mid, anumでRaをレシーバにしてシンボルmidの名前のメソッドを
            # 呼び出す。ただし、引数はanum個あり、R(a+1), R(a+2)... R(a+anum)が引数
          when :SEND
#           a = getarg_a(cop)
#           a = lpl.getarg_a(cop)
            a = imem.getarg_a(rg['cop'])
#           mid = @irep.syms[getarg_b(cop)]
#           mid = irep.syms[lpl.getarg_b(cop)]
            mid = irep.syms[imem.getarg_b(rg['cop'])]
#           n = getarg_c(cop)
#           n = lpl.getarg_c(cop)
            n = imem.getarg_c(rg['cop'])
#           newirep = Irep::get_irep(@stack[@sp + a], mid)
            newirep = Irep::get_irep(@stack[a], mid)
            if newirep then
#             @callinfo[@cp] = @sp
#             @cp += 1
#             @callinfo[@cp] = @pc
#             @cp += 1
#             @callinfo[@cp] = @irep
#             @cp += 1
#             @callinfo[(@cp += 3) - 3, 3] = [@sp, @pc, @irep]
              @callinfo[-3 + @cp += 3, 3] = [@sp, @pc, @irep]
.
1091,1113c
            # メソッドの先頭で引数のセットアップする命令。面倒なので詳細は省略
          when :ENTER
.
1067,1089c
            # JMPNOT Ra, nでもしRaがnilかfalseならpcをnだけ増やす。ただし、nは符号付き
          when :JMPNOT
#           if !@stack[@sp + getarg_a(cop)] then
#           if !@stack[sp + lpl.getarg_a(cop)] then
            if !@stack[imem.getarg_a(rg['cop'])] then
#             @pc = @pc + getarg_sbx(cop)
#             pc = pc + lpl.getarg_sbx(cop) - 1
              rg['pc', -1] = rg['pc'] + imem.getarg_sbx(rg['cop'])
#             next
            end
.
1065a
            end
.
1064c
              rg['pc', -1] = rg['pc'] + imem.getarg_sbx(rg['cop'])
.
1060,1061c
            # JMP nでpcをnだけ増やす。ただし、nは符号付き
          when :JMP
#           @pc = @pc + getarg_sbx(cop)
#           pc = pc + lpl.getarg_sbx(cop) - 1
            rg['pc', -1] = rg['pc'] + imem.getarg_sbx(rg['cop'])
#           next

          when :JMPIF
#           if @stack[@sp + getarg_a(cop)] then
#           if @stack[sp + lpl.getarg_a(cop)] then
            if @stack[imem.getarg_a(rg['cop'])] then
.
1057,1058c
            # 何もしない
          when :NOP
.
1054,1055c
          case sym
#         case rg.shift('sym')
#         case rg['sym']
.
1052a
          lpl.plini
#         @flag[0] = 2
.
1050,1051c
#       if fl.empty?
        unless fl[0][0]
          rg.push('pc', rg['pc'] + 1)
          rg.push('sp', rg['sp'])
          rg['ctr', 1] = rg['ctr', 1].abs
#         while ! lpl.ctr_c do Slp.new.slp end
.
1045,1048c
        if 0 <= rg['ctr', 1]
          sym = rg.shift('sym')
#         rg.push('pc', rg['pc'] + 1)
#         rg.push('sp', rg['sp'])
          rg['ctr', 1] *= -1    # kakezan
        end
.
1037,1043c
#       sym = rg.shift('sym')
.
1034d
1032c
          rg.shift('sym')
.
1025,1029d
1014,1023c
#      if ?J != rg['sym'].to_s[0] && ! [:ENTER, :SEND, :RETURN, :NOP].include?(rg['sym'])       # q 
#     if rg['sym'] && ?J != rg['sym'][0]        # higokan mruby 70410200        # q 
      if rg['sym'] && ?J != rg['sym'].to_s[0] && ! [:ENTER, :SEND, :RETURN, :NOP].include?(rg['sym'])   # q 
        if 0 <= rg['ctr', 1] # && ! ise.empty?
#         thi, th = iset(sym, cop, sp, pc, thi, th)     ###
          ise<< iset(rg)  # p 
#         ise.reject! { |fis| [true][rg['thi'] = fis.resume]}
#         fl<< fls(rg['pc'])      # p 
          fl[0]<< fls(rg['pc'])   # p 
.
1010,1012c
#     flg[0], pl = fls(pc, pl) if 0 == @flag[0] ###
#      fl[0] && fl[0].resume && fl = (fl[1 .. -1] || [])
      fl[0][0] && fl[0][0].resume && fl[0] = (fl[0][1 .. -1] || [])
.
1006,1008c
#      ise.reject! { |fis| rg['thi'] = fis.resume; 0 == rg['thi']}
      ise.reject! { |fis| fis.resume}
.
1002,1004c
#         lpl.verb "#{rg['pc'].to_xeh}     #{rg['sym']}    #{rg['cop'].to_xeh}"
      lpl.verb "#{rg['pc'].to_xeh} #{rg['sym']}    #{rg['cop'].to_xeh}" if rg['sym']
.
998,999c
        c, s = opf(irep, rg['pc']) #### if pco != pc
        rg.push('cop', c)
        rg.push('sym', s)
.
975,996c
      if 0 <= rg['ctr', 1]
#       sp = @sp
#       @stack.sp(rg['sp'] = @sp) # + 0
        @stack.sp(rg['sp']) # + 0
.
969,970c
#    rg = Rg.new([['ctr', 0], ['thi', 0], ['pc', @sp], ['sp', @sp], ['cop'], ['sym']])
    rg = Rg.new([['ctr', 1], ['pc', @sp], ['sp', @sp], ['cop'], ['sym']])
#    pco = rg['pc']
.
966c
#    fl = []
    fl = [[], []]
.
963d
961c
#    @flag[0] = 1
.
931c
#       Fiber.yield(0 == thi)   ##
        Fiber.yield(0 > thi) ##
#       rg = Fiber.yield(0 > thi)    ##
#       thi += 1
.
929c
#       [thi, th]       ###
.
924d
921a
#       thi += 1
.
905,915c
#       opa = opg.(thi) + [[k_sp, [sp]], []][thi <=> 0]   # c 
#       pl.pl_es(pc1, opa)
        pl.pl_es(pc1, opg.(thi) + [[k_sp, [sp]], []][thi <=> 0])  # c 
.
889,890c
#           fv = fvl[-1].(oi); fvl.delete_at(((1 <=> fvl.size) << 1) + 1)   # c 
            fv = (fvl.delete_at(((1 <=> fvl.size) << 1) + 1) || fvl[0]).(oi)        # c 
.
887d
875d
857a
#   pc1 = 0
.
855c
# def iset2     ##
    pc, sp, cop, sym = rg.to_a('pc', 'sp', 'cop', 'sym')
#   pc, sp, cop, sym = nil
.
853d
846,847c
        @@slp.slp 0
.
842d
840d
838c
#     Fiber.yield(false)
.
836a

.
831,835d
821,822d
817,819c
#       lpl.verb "#{(pc - 1).to_xeh}                       #{sym}  #{r[0].to_xeh}  #{r[1].to_xeh}"
        lpl.verb "#{pc.to_xeh}                     #{sym}  #{r[0].to_xeh}  #{r[1].to_xeh}"
.
814,815c
#       ca[flg.inject(0) { |rv, v| rv = v ? 0 : 1 | rv << 1}].call
        flg[0] && ca[flg[1] ? 0 : 1].call
.
804,808c
#       sym, (r0, r1) = rslt pl # higokan mruby 70410200        # bce75e27 2211410200 matz
.
802a
#       pl = lpl.pl_g(pc)       ##
        pl = lpl.pl_g(pc1)      ##
        sp ||= s.sp(pl[i_sp][0])
.
798,799c
          pc1 = pc + 1
.
793c
#      sz = 4; ap = (1 << sz) + sz + 1

#       sz.step(wd - 2 + ap -= (ap + 2) >> 2)             { |n| plr<< lm.(isr0, s[n])}      # p c 
#       sz.step(wd - 1 + ap -= ((ap + 2) >> 2) + 1)       { |n| plr<< lm.(isr0, s[n])}      # p c 
#       sz.step(wd - 1 + ap -= (ap >> 2) + 1)             { |n| plr<< lm.(isr0, s[n])}      # p c 
#       sz.step(wd - 1 + ap -= ((ap + 2) >> 1) + 1 >> 1)    { |n| plr<< lm.(isr0, s[n])}      # p c 
#       sz.step(wd - 1 + ap -= (ap >> 1) >> 1) + 1)         { |n| plr<< lm.(isr0, s[n])}      # p c 


.
787,790c
      } # ,     # rs[1] = r0.to_xeh
#     -> {   # flg[-1]
#     },        # rs[0] = r1.to_xeh
#     -> {}
.
782,785c
#         plr += lm.(isr0, s[sz .. sz - 1 + ap = ap - (ap >> 2) & 0x3f])      # c 
          plr += lm.(isr0, s[sz, -1 + ap -= (ap + 3) >> 2])       # c 
.
777c
##      ((sw = sp + sz) + 0xe).step(sw, -1) {   # higokan mruby 70410200        # bbab89e7 5211410200 tmtm
#       sz.step(sz - 1 + ap -= (ap + 3) >> 2)          { |n| plr<< lm.(isr0, s[n])} # p c 
.
765,766c
    lm = ->(isr0, r1) {r1 && imem.send(pr, *isr0, r1)}       # l 
.
761,762c
#      sz = 4; ap = 1 << sz
#      sz -= 2; ap = ((ap << sz) + ap >> sz - 1) + 1 >> 1
      sz = 1; ap = @@fls_m
.
758a

.
754d
749c
      i_th = lpl.afl('th', ?i)  # q 
.
746a
      pc1 = 0
.
745a
##        pl = lpl.pl_g(pc) ### fls
##      pl[i_th] = lpl.pl_eg(pc, 'th')  ### fls

.
740a
  @@fls_w = 4; (@@fls_m = 1 << @@fls_w) + @@fls_w + 1
  @@fls_w -= 2
  @@fls_m = ((@@fls_m << @@fls_w) + @@fls_m >> @@fls_w - 1) + 1 >> 1
  @@fls_w = nil
.
735,736d
732c
    r = pl[lpl.afl('th', ?i)]           # q 
.
707a
#    @pl.nmrcf

.
702a
#   @pla = Array.new($pcmax)
#   $pltini.call()
    @pl = ENVary.new

    @rmt = wkth

.
684,691c
#    @flag = []
.
659c
  def to_a(*a)
.
653,655c
    i ||= @a.assoc('ctr')[1].abs
#   i ||= @a.assoc('ctr')[1] + 1
#   @a.assoc(a[0])[@i] = a[1]
#   @a.assoc(a.shift)[a[0] || @i] = v
.
646c
    i ||= @a.assoc('ctr')[1].abs
#   i ||= @a.assoc('ctr')[1] + 1
.
615d
611d
601d
590,596c
#   a.empty? || @p = a[0]
    @p = pt
#   @p
.
581,582c
      @p = sp; @s = s
#     @p = sp; @m = m; @s = s
.
578a
# def initialize(sp = 0, s = @@s, m = @@m)
.
567a

# private
# def nmrcf
#   @@nmrcf = Float == self.afl('Numeric')[0].class
# end
.
563d
561d
552d
547d
542d
540d
518,530c
        (mx &&= thn.hgt) || mx = 1
#       sl.slp(0, 4096)
#       Fiber.yield([if f = ckth(th[mx], 3)
#####   Fiber.yield([if f = (th[idx].nil?.! && ckth(th[mx], 3)) # fuguai taisaku
#                       f2 = idx >= mx && pl_es(pc, ['th', th])
#                       true
#                     end,
        Fiber.yield([(f = #### (th[idx].nil?.! && # fuguai taisaku
                        ckth(th[mx], 3)) &&
                        f2 = idx >= mx && (pl_es(pc, ['th', th]); true),
                sl.slp(0)
#       ][0] && idx >= mx)
        ][0] && f2)
#       (f =
#               ckth(th[mx], 3)
#####           th[idx].nil?.! && ckth(th[mx], 3)       # fuguai taisaku
#       ) && f2 = idx >= mx && pl_es(pc, ['th', th])
#       sl.slp(0)
##      Fiber.yield(f && idx >= mx)
#       Fiber.yield(f && f2)
##      f && idx -= (idx <=> mx) >> 1       ##
.
516c
#       mx = thn.hgt
.
508d
488,489c
#   return a[0] if 1 >= a.size
##  return a.ijr { |v| v.inject(@@imem.mcall) || v[0]}
.
485,486c
#     knid(a, :Array)   ?     __method__(a, pc)  :    a
      case a when Array then  __method__(a, pc)  else a end
.
482a
    ([] == a || knid(a, :Array).! || 1 >= a.size) && (return a)              # t 
.
481c
#   ([] == a || ! knid(a, :Array)) && (return a)        # t 
.
436d
431d
425d
417,423d
406,407d
392,394c
#   self[n] = 0 == n ? (@@plmg ||= ->(pi, pv) {pi.map { |v|  # l 
#       [v[0], pv.shift]}}).(pl_g(-1), pl) : pl         # c 
    self[n] = 0 == n ? @@Plmg.(pl_g(-1), pl) : pl       # c 
#   self[n] = 0 == n ? pl_g(-1).map { |v| [v[0], pl.shift]} : pl
.
388,390d
386c
# @@plmg = nil
  @@Plmg = ->(pi, pv) {pi.map { |v| [v[0], pv.shift]}}       # l 
.
381a
#    @@nmrcf ? pl.mapr { |v| v.to_i_from(Numeric)} : pl # furui mattn/mruby-json
.
379d
374d
370a
#    if 0 == n && ! flg
.
368,369c
#   if 1 > n then pl = pl[self.idx0(n)] end
.
364,366c
#    pl = self[@@idx0.(n, 0)]   # c 
    pl = self[0 > n ? ~ n : n]
.
362a
#    if 0 > n then flg = true; n = ~ n end
.
361c
#   sleep 0; GC.start; sleep 0
.
358c
#  @@idx0 = nil
.
323,325c
    ploc(n) { |a| (a = ENV[@@idb + a[0]]) &&
        ('[]' == (a[0] << a[-1]) && a = JSON::parse(a)); a}
#       (('[]' == (a.rotate(-1)[0 .. 1]) && a = JSON::parse(a)); a}     # higokan monami-ya.mrb:60510200 mruby:70410200
#       knid(a, :Array) && JSON::parse(a)}
.
285,286c
#    @@idx0 ||= ->(n = 0, t = 1) {n - ((n <=> t) >> 1)}  # l 
.
280,282d
271d
266c
#    plini
.
261,262c
#    0.step(@@rmth + 1) { |i|
#    (0 .. @@rmth + 1).each{ |i|
    1.step(@@rmth + 1) { |i|
.
259c
    plini

.
252d
210c
#    a[0] = ?s + a[0].to_s
    a[0] = ?s << a[0].to_s
.
208d
194d
93c
  @@slp = 5     # conf.gem :github => 'matsumotory/mruby-sleep'      # msleep usleep
.
82d
78d
33a

    case v when Kernel.const_get(k) then true end.!.!
.
28,30c
##  return v.kind_of?(Object.const_get k) # if 0.kind_of?(Numeric)      # super
#   return v.kind_of?(Kernel.const_get k) # if 0.kind_of?(Numeric)      # super
##  return v.kind_of?(k.constantize) # if 0.kind_of?(Numeric)   # RoR   # super
.



-- 
YAMAGUTIseisei ( str_h__namae = { :sei => "山口" , :mei => "青星" } )
http://hello.to/seisei/ mailto:seisei@.68..net  tel:081-70-5152-1104
heiwa furiisekkusu 1tu