Groups | Search | Server Info | Login | Register


Groups > japan.comp.firmware > #1

jit-1_-_github__ysei~mruby-meta-circular-heiretu_-_nightly_-_2_0_1_7_1_0_0_1__1001710200.rb

From YAMAGUTIseisei <seisei@x68k.net>
Newsgroups tw.bbs.comp.sources, japan.comp.firmware
Subject jit-1_-_github__ysei~mruby-meta-circular-heiretu_-_nightly_-_2_0_1_7_1_0_0_1__1001710200.rb
Followup-To tw.bbs.edu.computer-science, fj.soc.war-and-peace, hk.comp, cn.sci
Date 2017-10-01 12:15 +0000
Organization http://yahoo.jp/UUNk3s?#Sponsor_-_CellBE
Message-ID <59D0DC7D.8010704@x68k.net> (permalink)
References (27 earlier) <56332C2C.80904@x68k.net> <56360E57.2090200@hello.to> <57CC1CA9.5000107@hello.to> <5954F13B.3030107@hello.to> <59892D82.4060203@hello.to>

Cross-posted to 2 groups.

Followups directed to: tw.bbs.edu.computer-science, fj.soc.war-and-peace, hk.comp, cn.sci

Show all headers | View raw


33d32
< #    when ?r then '[]' == vs[0] + vs[-1]		# , Array	# q
37d35
< #	@@ks |= (0 .. 9).to_a.join + ?-		# * '' higokan mruby 70410200	# ?0.upto # higokan mruby 70410200 # 7221410200 6ccae658 suzukaze	# q
39d36
< #      ) + ?i == k ? '' : ?.			# q 2
41c38,39
<       vs.each_byte { |c| s.include?(c) || break}
---
> #      vs.each_byte { |c| s.include?(c) || break}
>       vs.all? { |c| s.include?(c)}
195c193,194
<   def ta(ta, cop) [ta.shift || 'getarg_a', ta.shift || cop][0 .. ta.pop || 1] end
---
> #  def ta(ta, cop) [ta.shift || 'getarg_a', ta.shift || cop][0 .. ta.pop || 1] end
>   def ta(l, cop) [l.shift || 'getarg_a', l.shift || cop][0 .. l.pop || 1] end
218d216
< #  def s__r1_eq_sr01(*a) a[@@I_s__s][	 a[@@I_s__r1]] == a[@@I_s__s][a[@@I_s__r0] + 1] end
278,280c276,280
<     # 3080410200 : 5x2 ok ( gc ) : monami-ya.mrb 8270410200 813e2af8	# http://www.monami-ya.jp/
<     self[0] = [['th',	 'sym', 'ctr', 'cto'],	# mruby 20410200 : higokan ? : ary_many
< 	       [[thini], 0,	[0],   [0]]]	# mruby 70410200 : 4x2 ok , 5x2 ng
---
>     # 3080410200 : 5x2 ok ( gc ) : monami-ya.mrb 8270410200 813e2af8	# www.monami-ya.jp
> #    self[0] = [['th',	 'sym', 'ctr', 'cto'],	# mruby 20410200 : higokan ? : ary_many
> #	       [[thini], 0,	[0],   [0]]]	# mruby 70410200 : 4x2 ok , 5x2 ng
>     self[0] = [['th',	 'sym',	'ctr'],	# mruby 20410200 : higokan ? : ary_many
> 	       [[thini], 0,	[-1]]]	# mruby 70410200 : 4x2 ok , 5x2 ng
292d291
< #      Slp.new.slp 0
361a361,369
>
> #   n >= 0 && p(
> #     to_ia(n)
> ##    to_ia(n, pl)
> ##    Rg.new(to_ia(n)).to_ra
> ##    Rg.new(to_ia(n)).to_ra('th')
> ##    rg = Rg.new(to_ia(n)); rg['ctr']
> #   )
>
382a391,401
>   @@Plmg = ->(pi, pv) {pi.map { |v| [v, pv.shift]}}	# l
>   def to_ia(n, lpl = self)
>     if 0 == n
> #      self[n]
>       @@Plmg.(pl_g(-1), lpl[n][1])	# c
>     else
> #      @@Plmg.(pl_g(-1), self[n])	# c
>       @@Plmg.(pl_g(-1), lpl[n])		# c
>     end
>   end
>
387c406,411
<     (ctr = ctr_r.abs) != cto_r ? (ctr_s(-ctr); cto_s ctr) : -ctr
---
>
> ##    ctr = ctr.abs
> ##    ctr != cto ? (ctr_s -ctr; cto_s ctr) : -ctr
> #    (ctr = ctr_r.abs) != cto_r ? (ctr_s -ctr; cto_s ctr) : -ctr
>
>     [ctr = ctr_r, 0 <= ctr && ctr_s(-ctr)][0]
397,399c421,423
<   def cto_r
<     pl_eg('cto')[0]
<   end
---
> #  def cto_r
> #    pl_eg('cto')[0]
> #  end
406,409c430,433
<   def cto_s(cto)
<     pl_es(0, ['cto', [cto]])
<     cto
<   end
---
> #  def cto_s(cto)
> #    pl_es(0, ['cto', [cto]])
> #    cto
> #  end
438c462,463
<   def st_id(a, pc)
---
> #  def st_id(a, pc)
>   def s_id(a, pc)
442,447d466
< #    a.map! { |v|
< ###    v.kind_of?(Array) ?  __send__(v, pc)  : v		# unwork ( thread ? )
< ##     knid(v, :Array) ?  __method__(v, pc)  : v		# unwork ( thread ? )
< ##     knid(v, :Array) ?  __callee__(v, pc)  : v		# unwork ( thread ? )
< #      knid(v, :Array) ?       st_id(v, pc)  : v
< #      case v when Array then  st_id(v, pc)  else v end
449c468
< ##    v.kind_of?(Array) ?  __send__(a, pc)  : a	 	# unwork ( thread ? )
---
> ##    v.kind_of?(Array) ?  __send__(a, pc)  : a		# unwork ( thread ? )
452,453c471,474
< #     knid(a, :Array) ?       st_id(a, pc)  : a
<       case a when Array then  st_id(a, pc)  else a end
---
> ##     knid(a, :Array) ?       st_id(a, pc)  : a
> #     knid(a, :Array) ?       s_id(a, pc)  : a
> #      case a when Array then  st_id(a, pc)  else a end
>       case a when Array then  s_id(a, pc)  else a end
455d475
< #    return a[0] if 2 > a.size
460d479
< #    a.inject { |opc, op|
462d480
< #case opc when Numeric then else
464d481
< #  print "#{pc.to_xeh}		#{opc}	#{op.to_xeh}\n" end
468d484
< #    }
482,483c498,501
< 	th[idx] =  st_id(th[idx], pc - 1)  ;
< ####	th[idx] =  st_id(th[idx], pc - 1)  if ckth(th[idx], 0)	# fuguai taisaku
---
> #	th[idx] =  st_id(th[idx], pc - 1)  ;
> 	th[idx] =  s_id(th[idx], pc - 1)  ;
> #####	th[idx] =  st_id(th[idx], pc - 1)  if ckth(th[idx], 0)	# fuguai taisaku
> ####	th[idx] =  s_id(th[idx], pc - 1)  if ckth(th[idx], 0)	# fuguai taisaku
488d505
< #	  self.pl_es(pc, ['th', th])
493d509
< #	Slp.new.slp 0
495d510
< ##	Slp.new.slp(0, 4096)
498,499c513,514
< #	idx += f && idx < mx ? 1 : 0	##
< 	f && idx += idx < mx ? 1 : 0	##
---
> #	f && idx += idx < mx ? 1 : 0	##
> 	f && idx += (mx <=> idx) + 1 >> 1	##
532d546
< #      Slp.new.slp
572d585
< #     s[@p.sgp a[0]]
575d587
< #   [mloc, @s[@p + a[0].sgp], @@m.unlock][1]
581d592
< #      a = @s[@p.sgp a[0]] = a[1]
585d595
< #   [mloc, @s[@p + a[0].sgp] = a[1], @@m.unlock][1]
589,592d598
<
< # def mloc
< #   begin @@m.lock; rescue Slp.new.slp(0); retry end
< # end
619c625,626
<     i ||= @a.assoc('ctr')[1]
---
> #    i ||= @a.assoc('ctr')[1]
>     i ||= @a.assoc('ctr')[1] + 1
621d627
< #    self[@i] = a[0]
624d629
< #  def []=(*a, v)
627c632,633
<     i ||= @a.assoc('ctr')[1]
---
> #    i ||= @a.assoc('ctr')[1]
>     i ||= @a.assoc('ctr')[1] + 1
670d675
< #    (@pl = ENVary.new(rmth + 1, [thini], [], [])).plini
703c708
<     r = [r, r.map { |v| lpl.ckth(v, 1)}]
---
> #    r = [r, r.map { |v| lpl.ckth(v, 1)}]
706c711,712
<     r.map! { |v| [v[0], v[-1]]}
---
> #    r.map! { |v| [v[0], v[-1]]}
>     r = [r, r.map { |v| lpl.ckth(v, 1)}].map { |v| [v[0], v[-1]]}
733d738
< #      sz = 4; ap = (1 << sz) - 1 - 1
735c740,741
<       sz -= 2; ap = (ap << sz) + ap + (1 << (sz - 1)) >> sz
---
> #      sz -= 2; ap = (ap << sz) + ap + (1 << (sz - 1)) >> sz
>       sz -= 2; ap = ((ap << sz) + ap >> sz - 1) + 1 >> 1
743d748
< #	r = (plr[r1] if 0 <= sz && r1 <= sz) || lm.(isr0, r1)	# c
749,750c754,755
< #	sz.step(sz - 1 + ap -= ap >> 2)	{ |n| plr<< lm.(isr0, s[n])}	# p c
< 	mx = sz - 1 + ap -= ap >> 2
---
> #	mx = sz - 1 + ap -= ap >> 2
> 	mx = sz - 1 + ap = ap - (ap >> 2) & 0x3f
752,753c757,758
< 	(mx - sz).times { |n| plr<< lm.(isr0, s[n])}	# p c
< #	(mx - sz).times { |n| s[n] && plr<< lm.(isr0, s[n])}	# p c
---
> #	(mx - sz).times { |n| plr<< lm.(isr0, s[n])}	# p c
> 	(sz .. mx - 1).each { |n| plr<< lm.(isr0, s[n])}	# p c
772d776
< #	sz = plr.width
774d777
< #	ca[flg.inject(0) { |rv, v| rv <<= 1; rv |= v ? 0 : 1}].call
782c785
< #     }		##
---
> #     }	##
790c793,795
<     flg, pl = true
---
> #    flg, pl = true
>
>     pl = lpl.pl_g(pc)
794c799
< 	flg ? pl = lpl.pl_g(pc) : pl[i_th] = lpl.pl_eg(pc, 'th')
---
> #	flg ? pl = lpl.pl_g(pc) : pl[i_th] = lpl.pl_eg(pc, 'th')
799a805,806
>
> 	pl[i_th] = lpl.pl_eg(pc, 'th')
805,806c812,813
<   def iset2(rg, thi = 0, th = [])		###
< # def iset(rg)	##
---
> # def iset2(rg, thi = 0, th = [])		###
>   def iset(rg)	##
815,819d821
< #     printf("Unkown code %s \n", OPTABLE_SYM[imem.get_opcode(cop)])
< #     return
< #   )
< #    fmla = fml
<
821d822
< #    ta = ->(ta) { [ta.shift || 'getarg_a', ta.shift || cop][0 .. ta.pop || 1] }	# l
823c824
< #   th = []	##
---
>     th = []	##
826,830c827,832
< #    fvl = [->(oi) {[fv[oi] = th[oi] = (ta.(fv[oi])), []]},	# l c
< #	   ->(oi) {th += [[fv[oi] && ta.(fv[oi])], []][		# l c
<     fvl = [->(oi) {[fv[oi] = th[oi] = (imem.ta(fv[oi], cop)), []]},	# l
< 	   ->(oi) {th += [[fv[oi] && imem.ta(fv[oi], cop)], []][	# l
< 		((wd = fv.width) <=> oi) >> 1]}] # .lazy
---
> #    fvl = [->(oi) {[fv[oi] = th[oi] = (imem.ta(fv[oi], cop)), []]},	# l c
> #	   ->(oi) {th += [[fv[oi] && imem.ta(fv[oi], cop)], []][	# l c
> #		((wd = fv.width) <=> oi) >> 1]}] # .lazy
>     fvl = [->(oi) {th += [[fv[oi] && imem.ta(fv[oi], cop)], []][		# l c
> 	     ((wd = fv.width) <=> oi) >> 1]},
> 	   ->(oi) {[fv[oi] = th[oi] = (imem.ta(fv[oi], cop)), []]}] # .lazy	# l c
833d834
< #      fml = fmla.dup
838d838
< #	fv = fml.shift
842,843c842,843
< 	  when 'th' then fv = fvl[oi <=> 0].(oi)	# c
< #	  when 'th' then (fv, th, wd) = imem.fvl(oi, th, fv, wd, cop)
---
> #	  when 'th' then fv = fvl[oi <=> 0].(oi)	# c
> 	  when 'th' then fv = (fvl.delete_at(1) || fvl[0]).(oi)	# c
851,852c851,852
< #    thi = 0	##
< #    k_sp_r = pla.assoc('sp')[1]
---
>     thi = 0	##
> #    thio = thi - 1
854,863c854,867
< #   Fiber.new {	##
< #     loop {	##
< 	opa = opg.(thi)	# c
< #	opa.push(k_sp_r, [sp]) if 0 == thi
< 	opa.push(k_sp, [sp]) if 0 == thi
<
< 	pl.pl_es(pc1, opa)
< 	pl.ctr_s(pc1) if 0 == thi
<
< #	Slp.new.slp 0
---
>     Fiber.new {	##
>       loop {	##
> 	if 0 > pl.ctr_r || 0 != thi # && thi != thio
> 	  opa = opg.(thi)	# c
> 	  opa.push(k_sp, [sp]) if 0 == thi
>
> 	  pl.pl_es(pc1, opa)
>
> 	  pl.ctr_s(pc1) if 0 == thi
>
> #	  thio = thi
> 	  if 0 != thi && wd <= thi then thi = -1 end
> #	  if 0 != thi && wd <= thi && 0 < thio then thi = -1 end
> 	end
864a869
> #	@@slp.slp
869,882c874,887
< 	if 0 != thi && wd <= thi then thi = -1 end
< 	[thi + 1, th]	###
< #	Fiber.yield(thi += 1)	##
< #     }		##
< #   }		##
<   end
<
<   def iset(rg)
<     thi = 0
<     th = []
<
<     Fiber.new {
<       loop {
< 	thi, th = iset2(rg, thi, th)
---
> #	if 0 != thi && wd <= thi then thi = -1; th = [] end
> #	[thi + 1, th]	###
> 	Fiber.yield(thi += 1)	##
>       }		##
>     }		##
>   end
>
> #  def iset(rg)
> #    thi = 0
> #    th = []
>
> #    Fiber.new {
> #      loop {
> #	thi, th = iset2(rg, thi, th)
884,887c889,892
< 	Fiber.yield(thi)
<       }
<     }
<   end
---
> #	Fiber.yield(thi)
> #      }
> #    }
> #  end
919c924,925
<     rg = Rg.new([['ctr', 1], ['thi', 0], ['pc', @pc], ['sp', @sp], ['cop'], ['sym']])
---
> #    rg = Rg.new([['ctr', 1], ['thi', 0], ['pc', @pc], ['sp', @sp], ['cop'], ['sym']])
>     rg = Rg.new([['ctr', 0], ['thi', 0], ['pc', @pc], ['sp', @sp], ['cop'], ['sym']])
935,937d940
< #	  rg['cop'] = c
< #	  rg['sym'] = s
< #	  rg['cop'], rg['sym'] = opf(irep, rg['pc'])
956d958
< #####	  ise = iset(rg) if 0 == rg['thi']	##
958d959
< #	  rg['thi'] = ise.resume	##
962c963,968
< 	  (rg.push('pc', rg['pc']); rg.push('sp', rg['sp'])) if 0 == rg['thi']	##
---
> 	  if 0 <= rg['ctr', 1] && 0 == rg['thi']
> #	    (rg.push('pc', rg['pc']); rg.push('sp', rg['sp'])) if 0 == rg['thi']	##
> 	    rg.push('pc', rg['pc'])	##
> 	    rg.push('sp', rg['sp'])	##
> 	    rg['ctr', 1] += 1
> 	  end
965,973c971,975
< #	  rga.('push', nil, 'pc', rg['pc'])	# c
< 	  rg.push('pc', rg['pc'])
< 	  rg.push('sp', rg['sp'])
< 	  rg['ctr', 1] *= -1	# kakezan
<
< #	  while ! lpl.ctr_c do Slp.new.slp end
<
< 	  lpl.plini
< 	  @flag[0] = 2
---
> 	  if 0 <= rg['ctr', 1]
> 	    rg.push('pc', rg['pc'])
> 	    rg.push('sp', rg['sp'])
> 	    rg['ctr', 1] *= -1	# kakezan
> 	  end
974a977,978
> 	  if 0 == rg['ctr', 1]
> #	    while ! lpl.ctr_c do Slp.new.slp end
976c980,981
< 	  case rg['sym']
---
> 	    lpl.plini
> 	    @flag[0] = 2
978,979d982
< 	    # 何もしない
< #	  when :NOP
981,986c984
< 	    # 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']) - 1
< #	    next
---
> 	    case rg['sym']
988,996c986,987
< 	  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
< #	      @pc = @pc + getarg_sbx(cop)
< #	      pc = pc + lpl.getarg_sbx(cop) - 1
< 	      rg['pc', -1] = rg['pc'] + imem.getarg_sbx(rg['cop']) - 1
< #	      next
< 	    end
---
> 	      # 何もしない
> #	    when :NOP
998,1002c989,990
< 	    # 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
---
> 	      # JMP nでpcをnだけ増やす。ただし、nは符号付き
> 	    when :JMP
1007d994
< 	    end
1009,1048c996,1004
< 	    # メソッドの先頭で引数のセットアップする命令。面倒なので詳細は省略
< 	  when :ENTER
< #	    rg['pc', -1] = rg['pc']
<
< 	    # 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
< #	      @callinfo[@cp] = rg['sp']
< #	      @cp += 1
< #	      @callinfo[@cp] = @pc
< #	      @callinfo[@cp] = rg['pc']
< #	      @cp += 1
< #	      @callinfo[@cp] = @irep
< #	      @callinfo[@cp] = irep
< #	      @cp += 1
< 	      @callinfo[@cp ... @cp += 3] = [rg['sp'], rg['pc'], irep]
<
< #	      @sp += a
< #	      rg['sp'] += a
< 	      rg['sp', -1] = rg['sp'] + a
<
< #	      @pc = 0
< 	      rg['pc', -1] = -1
< #	      @irep = newirep
< 	      irep = newirep
< #	      @irepid = @irep.id
< 	      @irepid = irep.id
---
> 	    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
> #		@pc = @pc + getarg_sbx(cop)
> #		pc = pc + lpl.getarg_sbx(cop) - 1
> 		rg['pc', -1] = rg['pc'] + imem.getarg_sbx(rg['cop']) - 1
> #		next
> 	      end
1050,1055c1006,1014
< #	      next
< 	    else
< 	      args = []
< 	      n.times do |i|
< #		args.push @stack[@sp + a + i + 1]
< 		args<< @stack[a + i + 1]	# p
---
> 	      # 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']) - 1
> #		next
1058,1060c1017,1065
< #	      @stack[@sp + a] = @stack[@sp + a].send(mid, *args)
< 	      @stack[a] = @stack[a].send(mid, *args)
< 	    end
---
> 	      # メソッドの先頭で引数のセットアップする命令。面倒なので詳細は省略
> 	    when :ENTER
> #	      rg['pc', -1] = rg['pc']
>
> 	      # 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 ... @cp += 3] = [rg['sp'], rg['pc'], irep]
>
> #		@sp += a
> #		rg['sp'] += a
> 		rg['sp', -1] = rg['sp'] + a
>
> #		@pc = 0
> 		rg['pc', -1] = -1
> #		@irep = newirep
> 		irep = newirep
> #		@irepid = @irep.id
> 		@irepid = irep.id
>
> #		next
> 	      else
> 		args = []
> 		n.times do |i|
> #		  args.push @stack[@sp + a + i + 1]
> 		  args<< @stack[a + i + 1]	# p
> 		end
>
> #		@stack[@sp + a] = @stack[@sp + a].send(mid, *args)
> 		@stack[a] = @stack[a].send(mid, *args)
> 	      end
1062,1085c1067,1094
< 	    # 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'])]
< 	    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] # - 1
< 	      @cp -= 1
< #	      @sp = @callinfo[@cp]
< #	      sp = @callinfo[@cp]
< #	      rg['sp'] = @callinfo[@cp]
< 	      rg['sp', -1] = @callinfo[@cp]
---
> 	      # 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'])]
> 	      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] # - 1
> 		@cp -= 1
> #		@sp = @callinfo[@cp]
> #		sp = @callinfo[@cp]
> #		rg['sp'] = @callinfo[@cp]
> 		rg['sp', -1] = @callinfo[@cp]
> 	      end
> #	    else
> #	      printf("Unkown code %s \n", OPTABLE_SYM[get_opcode(cop)])
> #	      printf("Unkown code %s \n", OPTABLE_SYM[imem.get_opcode(cop)])
1087,1089d1095
< #	  else
< #	    printf("Unkown code %s \n", OPTABLE_SYM[get_opcode(cop)])
< #	    printf("Unkown code %s \n", OPTABLE_SYM[imem.get_opcode(cop)])
1091a1098
> 	rg['ctr', 1] -= 1 if 0 < rg['ctr', 1]
1093a1101,1102
> #	  rg['ctr', 1] -= 1 if flg[0]
>
1102,1103c1111,1112
<
< 	  rg['ctr', 1] *= -1	# kakezan
---
> 	  @pc = rg['pc']
> #	  rg['ctr', 1] *= -1	# kakezan
1114d1122
< #	Slp.new.slp 0
1117d1124
< #	Slp.new.slp



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

Back to japan.comp.firmware | Find similar


Thread

jit-1_-_github__ysei~mruby-meta-circular-heiretu_-_nightly_-_2_0_1_7_1_0_0_1__1001710200.rb YAMAGUTIseisei <seisei@x68k.net> - 2017-10-01 12:15 +0000

csiph-web