アフィリエイト広告を利用しています

2019年08月03日

HP-42S: RTN 命令の動作

HP-42S でのプログラミングの勉強はだいぶ進んできて, この数週間をかけて 80 行ほどの長いサンプルプログラムを読んでいる. 表示画面に指定した関数のグラフを描画するものである. これまで学んだ変数メニューや分岐命令, 条件判断機能などを使ったやや複雑なプログラムになっている.

これを一行づつ動作を解析しながら読む. 面白い.
そのプログラムの中で使用されている, サブルーチン呼び出しから呼び出し元に戻るためのある $\mathrm{RTN}$ 命令の動作が不明になったのでマニュアルで $\mathrm{RTN}$ 命令の説明を読んでみた. そこには次のように記述されている.


$\mathrm{RTN}$: リターン。実行中のプログラムで, 若い行にある最も近くの $\mathrm{XEQ}$ の次の行に分岐します。該当の $\mathrm{XEQ}$ 命令が無い場合は, プログラムの実行は停止します。


調べたいと思っていたのは, $\mathrm{RTN}$ 命令に対応する $\mathrm{XEQ}$ 命令が存在しない場合の動作であり, その場合にはプログラムの実行が停止するという上記の記述によって, 疑問はひとまず解決した.

しかし, これとは直接関係しないが, 同じ説明の中によくわからない点が 1 箇所ある. 「実行中のプログラムで, 若い行にある最も近くの $\mathrm{XEQ}$ の次の行に分岐します」というところ. この $\mathrm{RTN}$ 命令に対応する, 呼び出し側の $\mathrm{XEQ}$ 命令の次の行に分岐する, の誤りではないのか?

確かめるために, 英語版のマニュアル "HP-42S RPN Scientific Calculator: Owner's Manual" の対応する箇所を調べた.

そこには次のように記述されている.


$\mathrm{RTN}$: Return. In a running program, branches the program pointer back to the line following the most recent $\mathrm{XEQ}$ instruction.

とある. これを読むと, 「若い行にある最も近くの $\mathrm{XEQ}$」ではなく「最も最近に実行された $\mathrm{XEQ}$ 命令の次の行にプログラムポインターを戻す」のだとわかる. 最も最近に実行された $\mathrm{XEQ}$ 命令とは, 現在実行中のサブルーチンを呼び出した $\mathrm{XEQ}$ 命令のことだから, 呼び出し元に戻るということに他ならない.

翻訳の誤りと思われるが, 英文のマニュアルではプログラムポインター (program pointer) という概念を直接使って説明をしている. 自分としてはこのほうが機械の動作する様子そのものをイメージしやすい.

今後は複雑なサンプルプログラムがたくさん出てくるので, 日本語マニュアルと英文マニュアルを併用して学んでいけばいいだろう.
この記事へのコメント
コメントを書く

お名前:

メールアドレス:


ホームページアドレス:

コメント:

この記事へのトラックバックURL
https://fanblogs.jp/tb/9032190

この記事へのトラックバック
ファン
検索
<< 2024年11月 >>
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
最新記事
最新コメント
眼科の定期検査 〜 散歩 by コトタマ (02/15)
眼科の定期検査 by 三文字寄れば文殊のヒフミヨ (09/21)
本を読んで過ごす by 底彦 (12/13)
本を読んで過ごす by ねこ (12/12)
数学の計算をする by 底彦 (12/04)
タグクラウド
カテゴリアーカイブ
仕事(59)
社会復帰(22)
(44)
コンピューター(211)
(1441)
借金(8)
勉強(13)
(13)
数学(97)
運動(8)
日常生活(1403)
(204)
健康(38)
読書(21)
プロフィール

ブログランキング・にほんブログ村へ
にほんブログ村
にほんブログ村 メンタルヘルスブログ うつ病(鬱病)へ
にほんブログ村
にほんブログ村 科学ブログ 数学へ
にほんブログ村
にほんブログ村 IT技術ブログ プログラム・プログラマーへ
にほんブログ村