[SML 7565] OpNoDupとOpPop

Takafumi Saikawa tscompor @ gmail.com
2009年 6月 4日 (木) 14:34:14 JST


今日は。

From: Yasuda Yutaka <yasuda @ mfc.bakkers.gr.jp>
Subject: [SML 7563] Re: 第8回Smalltalk勉強会@京都
Date: Thu, 4 Jun 2009 12:47:24 +0900
Message-ID: <5C90003C-C5B3-47A5-A851-927DA2AC617C @ mfc.bakkers.gr.jp>

yasuda> (あれ?単なる pop 命令てのは無いのか??そういえば見た 
yasuda> ことがない。)

102番にOpPopがあり、動作もそれほど違いが無さそうでしたので、
MethodContextをインスペクトしている間に

self method byteAt: 11 put: 102

として書き換えてみましたが、簡単な例では問題なく動きました。
(デコンパイルは失敗するようになってましたが)

OpPopとOpNoDupで本当に違いが無いのか気になります。


昔のSmalltalk-80には dup first や dup last にあたる物が
無いように見えます。Bluebookの596ページには
(http://stephane.ducasse.free.fr/FreeBooks/BlueBook/Bluebook.pdf の 618ページ)
"136 Duplicate Stack Top" 以外見あたりませんし、Squeak1.2では

self halt.
OrderedCollection new add: 100; add: 110; add: 120

が

29 <70> self
30 <D0> send: halt
31 <87> pop
32 <41> pushLit: OrderedCollection
33 <CC> send: new
34 <88> dup
35 <23> pushConstant: 100
36 <E2> send: add:
37 <87> pop
38 <88> dup
39 <24> pushConstant: 110
40 <E2> send: add:
41 <87> pop
42 <25> pushConstant: 120
43 <E2> send: add:
44 <7C> returnTop

となりました。(16r88 = 10r136)


才川隆文


SML メーリングリストの案内