0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

HLASMのハウスキーピング

Posted at

標準的なサブルーチン規約に従った、アセンブラモジュールのハウスキーピングのまとめ。

ENTRY

----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8
         PRINT NOGEN
SAMPLE   CSECT
         AMODE 31
         RMODE ANY
         YREGS
*
         STM   R14,R12,12(R13)
         BALR  R12,0
         USING *,R12
         LA    R15,SAVEAREA
         ST    R15,8(,R13)
         ST    R13,SAVEAREA+4
         LR    R13,R15
  • PRINT NOGEN: リスト上でマクロの展開を表示しない。
  • CSECT: CSECTの開始宣言。
  • AMODE 31, RMODE ANY: そのままの意味。
  • YREGS: レジスタ名をシンボル定義で宣言するマクロ。R0~R15でレジスタ0~15を表す。
  • STM R14,R12,12(R13): 呼び出し元のR14〜R12をR13+12のアドレスに保存する。
  • BALR R12,0: 次の命令のアドレスをR12に格納してベースレジスタを確立する(分岐はしない)。
  • USING *,R12: R12をベースレジスタとする。
  • LA R15,SAVEAREA: SAVEAREAのアドレスをR15にロードする。
  • ST R15,8(,R13): 呼び出し元のSAVEAREA+8に呼び出し先のSAVEAREAのアドレス(R15)を保存する。
  • ST R13,SAVEAREA+4: 呼び出し先SAVEAREA+4に呼び出し元SAVEAREAのアドレス(R13)を保存する。
  • LR R13,R15: R13にSAVEAREAのアドレスをロードする。

EXIT

----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8
RETURN   L     R13,SAVEAREA+4
         LM    R14,R12,12(R13)
         LHI   R15,0
         BR    R14
SAVEAREA DS    18F
         LTORG
         END
  • L R13,SAVEAREA+4: 呼び出し元のSAVEAREAアドレスをR13に戻す。
  • LM R14,R12,12(R13): 呼び出し元SAVEAREAに保存されていたR14~R12を復元する。
  • LHI R15,0: RCを0に設定。
  • BR R14: 呼び出し元のアドレス(R14)に分岐。
  • SAVEAREA DS 18F: SAVEAREA領域の定義。
  • LTORG: リテラルプールを配置。
  • END: CSECT終端を示す。

SAVEAREA

72バイト(18フルワード)領域。
Untitled Diagram.drawio.png

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?