100 /xpos exch def という動作(スタックマシンの動作)

スタックに 100 が積まれているときに /xpos exch def という動作はどのようになるのか追ってみます。

%!PS-Adobe-3.0

GPL Ghostscript 9.06 (2012-08-08)
Copyright (C) 2012 Artifex Software, Inc.  All rights reserved.
This software comes with NO WARRANTY: see the file PUBLIC for details.

100 /xpos exch def を実行するとxposに100 が定義されます。

GS>100 /xpos exch def
GS>xpos ==
100
  • 100 を実行すると100は手続きではないのでスタックに100が積まれる。
GS>100
GS<1>pstack
100
  • /xpos を実行すると /xpos は名前であり、手続きではないのでスタックに /xpos が積まれる。
GS<1>/xpos
GS<2>pstack
/xpos
100
  • exch を実行すると exch は手続きなのでふたつのスタックの値を交換する。
GS<2>exch
GS<2>pstack
100
/xpos
  • def を実行するとスタック1の名前にスタック0の値を関連付ける。
GS<2>def
GS>
GS>xpos ==
100
  • /xpos 100 def の順番なら入れ替える必要はないのです。