Concurrent Clean : ABCマシン(15) : e_system_sAP

e_system_sAPがなんなのか分からないと前に言っていたけれど、単純なことでした。
systemモジュールのAP関数のエントリーというだけのことでした。ただし、_system.abcファイルをのぞいても、そのエントリーは見つからないのです。
アセンブリの方(_system.s)を見ると、対応するエントリー名の呼び出しが消えているので、これはdescriptor情報に埋め込まれている関数を呼んでいるのではないかと推測。

e__system__nAP:
	movl	%ecx,(%esi)
	movl	$__reserve,(%ecx)
	movl	4(%ecx),%edx
	movl	8(%ecx),%ecx
	addl	$4,%esi
ea__AP:
	testb	$2,(%edx)
	jne	e_60
	movl	%ecx,(%esi)
	addl	$4,%esi
	movl	%edx,%ecx
	call	(%edx)         # jsr_eval 0
	movl	%ecx,%edx
	movl	-4(%esi),%ecx
	subl	$4,%esi
e_60:
	movl	(%edx),%ebp
	call	2(%ebp)        # jsr e_system_sAP
	movl	-4(%esi),%edx
	movl	(%ecx),%ebp
	movl	%ebp,(%edx)
	movl	4(%ecx),%ebp
	movl	%ebp,4(%edx)
	movl	8(%ecx),%ebp
	movl	%ebp,8(%edx)
	movl	%edx,%ecx
	subl	$4,%esi
	ret

コメントを付けたところが、関数呼び出し部分です。レジスタ上の計算でアドレスを求めているようすが分かります。
descriptorのデータ構造をアセンブリから読み取ってやれば、どういう意図で何を呼び出しているのかがもっとはっきりするはず。