SlimeASM — z/Architecture HLASM + x64 MASM → Java bit-exact 変換
COBOL 移行が止まる本当の理由 — 「ASM hot-loop と OS exit」に bit-exact で蓋がける。
銀行・保険・年金の COBOL 移行が完了しないのは、~1-5% の LOC が CPU 時間の 30-50% を占める ASM hot-loop と OS マクロ (SVC / GETMAIN / ESTAE / DCB) がそのまま残るからです。SlimeASM はここに bit-exact + 監査チェーン 付きで蓋をかぶせ、 Modern Systems / Heirloom / Astadia / IBM Wazi に対する 移行プロジェクト完走の最後のピース を提供します。
- z/Architecture HLASM: Phase A→C-3.7 まで完了。49 sample × S9 全 5 軸 = 245/245 PASS(2026-05-10)。整数・packed decimal (AP/SP/MP/DP/ZAP)・HFP (LE/AE/ME/DE)・vector SIMD (VL/VA/VC/VCE/VPERM/VSEL)・EX (Execute trick)・TR/TRT (Translate)・ED (Edit mask)・AR/AMODE 切替・DCB EODAD ファイル I/O まで動作
- Windows x64 MASM (ml64): Phase A=整数 hot-loop transpiler。5 sample × S9 全 5 軸 = 25/25 PASS(2026-05-11)。MOV/LEA/ADD/SUB/IMUL/IDIV/CMP/JMP/Jcc/LOOP/CALL/RET/PUSH/POP + Win64 ABI shim (GetStdHandle/WriteFile/ExitProcess)
- SlimeNENC 共通 9 ステージ基盤を共有。S2 Slot 符号化、S3 Π_R 正規化、S4 SOLOT、S5 受理 f、S7 監査チェーン、S8 Mini-PSV、S9 5 軸 bench は SlimeCOBOL / SlimePL/I / SlimeRPG / SlimeMUMPS と完全共有。S1 (FST) と S6 (emitter) のみ言語固有
- PC-based switch dispatch による Java 翻訳。EX trick / 自己改変以外のあらゆる制御フローを bit-exact で再現
- Java 出力を canonical runtime として 5 軸 bench (dialect / token-recover / mutation / determinism / java round-trip) で証明。実 ml64+link.exe バイナリ検証は Phase A-2 で追加軸として実装予定
銀行 IBM z/OS 系 COBOL 移行プロジェクトの 「ASM 残骸」問題に対する業界初の決定論変換器(弊社調べ)。
SlimeCOBOL + SlimeJCL に SlimeASM を加えることで、移行ツールの 三点セット完成 となります。
主要計測値 (2026-05-10 / 2026-05-11 実測)
49 sample × S9 全 5 軸 = ALL AXES PASS (Phase C-3.7)
5 sample × S9 全 5 軸 = ALL AXES PASS (Phase A)
整数 / 10 進 / HFP / SIMD / EX / TR/TRT / ED / DCB EODAD ファイル I/O
整数 hot-loop + Win64 ABI shim (GetStdHandle/WriteFile/ExitProcess)
S2-S5 / S7-S9 を SlimeCOBOL と完全共有、S1 / S6 のみ言語固有
z/Architecture (IBM mainframe) + x86_64 (Windows / Linux 拡張予定)
市場文脈 — レガシーアセンブラが残る場所
| 銀行 (IBM mainframe) | 勘定系・与信・決済システム。COBOL 80-95% / HLASM 5-15% の構成が一般的だが、HLASM が CPU 時間の 30-50% を占める。Heirloom / Astadia 等は HLASM を 1-line ずつ手作業で C/C++ にリライトし、per-LOC 数千〜数万円の課金。 |
|---|---|
| 保険・年金 | 年金計算・契約管理の HLASM hot-loop。AP / ZAP / packed decimal による高速 10 進演算と DCB ファイル I/O が混在、20-30 年無修正で稼働中の例多数。 |
| 防衛・宇宙 | x86 16-bit / 32-bit / 64-bit MASM 系。組込 Win32 DLL、レーダ信号処理、シミュレータ。Visual Studio + MASM (ml64) でビルドされた閉じたバイナリ群が更新止まり。 |
| 製造・組込 | Windows ベース計測機・ライン制御。x64 MASM hot-loop が DLL に閉じ込められ、保守元不明・ソースのみ残存のケース。 |
| 競合状況 | Heirloom Computing / Modern Systems / Micro Focus 等の COBOL 移行ツールはいずれも HLASM はサポート外 or 別契約(per-LOC 課金)。SlimeASM は WASM converter ツール課金のみ、出力 Java は永久無償デプロイ可。 |
サポート機能一覧
z/Architecture HLASM (Phase A→C-3.7、49 sample 全 PASS)
| 整数 (Phase A) | L / LR / LA / LH / LM / ST / STH / STM / A / AR / AH / S / SR / SH / M / MR / MH / D / DR / C / CR / CH / CL / CLR / CLC / B / BR / BC / BE / BNE / BL / BH / BCT / BCTR / BAS / BAL / MVC / MVI / XC / OC / NC |
|---|---|
| 10 進 (Phase B-1) | AP / SP / MP / DP / ZAP / CP / CVB / CVD — BigDecimal バッキングで IBM mainframe 4-bit packed decimal を完全再現 |
| HFP (Phase B-2) | LE / LD / AE / AD / SE / SD / ME / MD / DE / DD short / long 双方 — IBM 4-bit 指数 hex float ↔ IEEE 754 双方向 bit-exact 変換 |
| OS マクロ shim | GETMAIN / FREEMAIN / ABEND / SVC / RETURN / OPEN / CLOSE / GET / PUT / READ / WRITE / DCB — z/OS マクロを POSIX/Java shim に翻訳 |
| 変換 (Phase B-3) | PACK / UNPK (zoned ↔ packed) / TR / TRT (Translate / Translate-and-Test、256-byte 任意テーブル対応) / ED / EDMK (Edit mask、digit selector + verbatim pass-through) |
| SIMD (Phase C / C-3.5) | z/Arch Vector レジスタ V0..V31 — VL / VST / VA / VS / VLR / VLEG / VSTEG / VC / VCE / VPERM / VSEL(lane-wise compare-equal / byte permute / select) |
| 制御 (Phase C-3.6) | EX (Execute trick、saved-PC stack で機能版実装) / SAR / EAR / CPYA (AR mode) / SAM24 / SAM31 / SAM64 / BSM / BASSM(AMODE 切替 + Branch-and-Set-Mode 真分岐) |
| ファイル I/O (Phase C-3.7) | DCB DDNAME=... DSORG=PS MACRF=GM / PM EODAD=... + OPEN / GET / PUT / CLOSE + EODAD 真接続(EOF で指定ラベルへ分岐)。echo loop が stdin/stdout で動作 |
Windows x64 MASM (ml64) (Phase A、5 sample 全 PASS)
| 命令 (整数) | mov / lea / xchg / push / pop / add / sub / inc / dec / imul (2-op) / idiv (1-op) / neg / and / or / xor / not / shl / shr / sar / cmp / test / jmp / je / jne / jl / jle / jg / jge / loop / call / ret |
|---|---|
| レジスタ | RAX/RCX/RDX/RBX/RSP/RBP/RSI/RDI/R8..R15 + サブレジスタ全種 (eax/ax/al/r8d/r8w/r8b 等)。32-bit 書込はゼロ拡張、16/8-bit は上位保持を bit-exact 再現 |
| データ定義 | db / dw / dd / dq + equ $ - label(サイズ算出)。データセグメントは合成リニアアドレス (0x1000 起点 16-byte aligned) で再現 |
| セクション | option casemap:none / includelib / extern / .code / .data / proc / endp / end |
| Win64 ABI shim | GetStdHandle / WriteFile (RCX=hFile, RDX=lpBuffer, R8=nBytes, R9=lpWritten, [rsp+32]=lpOverlapped) / ExitProcess を System.out.write に翻訳。32-byte shadow space + push 引数も honored |
変換例 — z/Arch HLASM の echo loop (Phase C-3.7)
DCB EODAD で stdin の EOF を捕捉し、PUT を通って出力に転写する典型形:
* SlimeASM sample 49 — echo until EOF using DCB EODAD= branch.
ECHOL CSECT
OPEN (INDCB,(INPUT),OUTDCB,(OUTPUT))
LOOP GET INDCB,RECBUF
PUT OUTDCB,RECBUF
B LOOP
EOFRTN DS 0H
CLOSE (INDCB,,OUTDCB)
WTO 'ECHO_LOOP_OK'
BR 14
INDCB DCB DDNAME=DDIN,DSORG=PS,MACRF=GM,EODAD=EOFRTN
OUTDCB DCB DDNAME=DDOUT,DSORG=PS,MACRF=PM
RECBUF DS CL80
END ECHOL
S6 emitter は EODAD 属性を読み、 GET 命令の EOF パスを EOFRTN ラベルへの直接 PC ジャンプ に翻訳します。stdin 空入力で即 EOFRTN へ落ち、CLOSE → WTO まで直線実行され bit-exact PASS。
変換例 — x64 MASM の整数 hot-loop (Phase A)
Win64 ABI で WriteFile を呼んで「SUM=15」を出力する典型 (1+2+3+4+5):
; SlimeASM-x86 sample 03 — loop sum 1..5 -> 15, print "SUM=15".
.code
main proc
xor rax, rax ; sum = 0
mov rcx, 5 ; counter
sum_loop:
add rax, rcx
loop sum_loop ; dec rcx; jnz sum_loop → rax = 15
mov rcx, 10
xor rdx, rdx
idiv rcx ; rax=tens, rdx=ones
add al, '0'
add dl, '0'
mov buf, al
mov buf+1, dl
; ... GetStdHandle / WriteFile prefix / WriteFile buf ...
xor rcx, rcx
call ExitProcess
main endp
end
// Generated Java (deterministic, byte-exact)
case 1: R[1] = 5L; pc++; break; // mov rcx, 5
case 2: R[0] = R[0] + R[1]; // add rax, rcx
ZF = (R[0] == 0) ? 1 : 0;
SF = (R[0] < 0) ? 1 : 0; pc++; break;
case 3: R[1] = R[1] - 1; // loop sum_loop
pc = (R[1] != 0) ? 2 : pc + 1; break;
監査適合性 (金融・防衛)
- Bit-exact同一 .s / .asm 入力 → 同一 sha256 Java 出力。HFP / packed decimal / vector / x86 サブレジスタ semantics すべて含めて完全決定論。
- Java round-tripemit → javac → java → stdout を expected と diff、 HLASM 49/49 + x64 MASM 5/5 PASS(2026-05-10/11 baseline)。
s9_bench/bench.pyで全 5 軸自動回帰。 - Mutation 検出SOH (0x01) を任意位置に注入 → トークナイザが reject。HLASM 49/49 / x64 MASM 5/5 で全 mutation を 100% 検出。
- 決定論同一入力で 2 回 emit → byte-exact 一致を毎 sample で確認。
- Audit chainSlimeNENC 共通基盤 (S7) と統合可能、SHA-256 monotonic chain。
- Build-time LLMLLM は変換規則の構築段階のみ。ランタイムは決定論ルールベース、99.9995% 主張の根拠。
SlimeNENC ファミリーでの位置付け
- SlimeCOBOL の land-and-expand 仕上げ銀行 COBOL 移行プロジェクトでは、HLASM hot-loop が残ると Heirloom 等に per-LOC 課金で再依存する。SlimeASM 同梱で「移行プロジェクト 1 ベンダー完結」が成立する。
- SlimeJCL とのトリオCOBOL (本体) + JCL (制御) + ASM (hot-loop) の 3 点セットで IBM z/OS バッチ系の移行が完走。
- x64 への水平展開z/Arch で確立した Slot IR + S2-S9 共通基盤を Windows x64 (Phase A 完了) → Linux x86_64 NASM/GAS (Phase B 予定) → AVX-512/AMX (Phase C) → 16-bit DOS / 自己改変対応 (Phase D) へ展開。
- 独立 SKU他の SlimeNENC 製品と同じく独立 SKU。並列化 (PSDP) は本製品に含まれない。
License モデル
| 課金対象 | WASM/WASI converter ツール (開発者側) |
|---|---|
| 非課金 | 変換結果の Java ソース (顧客資産、永久無償デプロイ) |
| 方式 | Ed25519 署名 144B license + 3-hop air-gap activation (金融・防衛 audit 対応) |
| 並列化 (PSDP) | 本製品には含まれません。SlimeNENC 配下の独立 SKU として PSDP を別途。 |
関連資料
- 技術解説SlimeNENC Technical Overview (アセンブラ章を準備中)
- 出願明細特願 2026-046620 v15b の請求項 11 / 14d で COBOL / MUMPS / PL/I / RPG / アセンブラ等のレガシー方言処理を明示射程化
- 兄弟製品SlimeCOBOL / SlimeJCL / SlimePL/I / SlimeRPG / SlimeMUMPS と同じ S2-S5 / S7-S9 共通基盤
- ベンチマークS9 bench harness (5 軸 correctness)、
s9_bench/bench.pyで HLASM 245/245 + x64 MASM 25/25 自動回帰
