アカウント名:
パスワード:
別の解析担当(俺)によりますと、使用言語:BASIC/98コンパイラ(バージョン不明)EXEファイル軽量化:EXEPACKコマンドによる、リロケーション情報の圧縮だと思われます。
BASIC/98コンパイラと判定した理由は、「エラーメッセージ中に構造化BASIC命令に対するエラーメッセージがある」ことです。
#やっぱりACで
exepackや当時のbasicコンパイラ知ってると解析まとめ見てああ、と思い当たるんだけどその辺知らないで解析してるのは素直にすごいと思う。
> その辺知らないで解析してるのは素直にすごいと思う 激しく同意です。ここでは後出し番長がなんのかんの言ってるけど、リスクしかない地雷案件受けてやり遂げるってのは対したもんだと思う。
自分は98でdos時代diet使ってましたexe圧縮流行りましたねぇ、FDにどれだけ入るか当時知らずに若さと知識でエイヤとできたのは確かにすごいですね
https://twitter.com/roentgen/status/947509568141008897 [twitter.com]
一方でスタックの使い方は猿のようであった。ブロックがないこと(構造化 BASIC でもない限り)は当時のプログラムとしては相当に割を食っている。すべてのデータは、サブルーチンを抜けるときまで保持される
なんかこの辺何言ってんだかわかんないけど構造化BASICではないことは読み取れるけど矛盾してね?
PC98あたりの時代って、スコープの概念とかルーチンの構造化、関数化とかなかったと思うのですが。gosubで飛ぶのは、行番号指定だった気がするし、引数指定も無かったかと・・・
なので、「すべてのデータは、サブルーチンを抜けるときまで保持される」事はなく、全てグローバル変数で、サブルーチンだろうが何だろうが、変数の値を書き換えるとそれが結果になったと思います。
構造化が無いとか行番号指定のみとかは旧来のBASIC(N88とか)でのお話。
当時の構造化BASICはたぶん C言語での枠組みを BASICに導入したもの。たぶん、今回のはサブルーチン内のローカル変数は使えたんだろう。一方、今時の言語でいうブロックは存在しない。
「すべてのデータは、サブルーチンを抜けるときまで保持される」は自然な挙動。
# ツリーが分岐してるので IDさんにぶら下げてみるテスト。
N88-BASICだとラベルジャンプはあったように記憶してます#行番号と大して違わんかったけど
ブロックスコープがなくて、関数スコープのみってことじゃ?
# サブルーチン内でローカル変数使えるなら、構造化BASICって名乗ってもいいじゃない!
Cコンパイラが生成したコードでもブロックスコープなんてフツー存在しないっしょ
http://www.dennougumi.co.jp/products/basic98/ver5/index.html [dennougumi.co.jp]
BASIC/98 Ver.5の特長・N88資産をラクラク継承 NECのN88BASIC(86)(MS-DOS版)の殆どのコマンド・ステートメント・関数を装備していますので、これまでのN88資産を、Windows上に容易に移植できます。
(中略)・C言語並みの本格的構造化 構造化プログラミングをサポートする命令を数多く導入。行番号に依存しないハイレベルな構造化により、信頼性の高いプログラムを効率よく開発できます。
構造化命令により、構造化プログラミングをサポートするってのと、作成されたプログラムが構造化されているってのは別の話では?
#ステマではない
その売り言葉に乗せられた客と営業にえらい目にあわさせられたからなあ。「N88BASICをDOS/Vに載せ直すだけです」って、専用デバイスだらけじゃあそちらの手間の方が余りに大きい。「このカード、Cバス用しかないじゃん」とかのレベルのはなしががが。
このへんは
・構造化プログラム(if や while で goto 使わないブロックがあること)・構造体があること・ヒープの概念と malloc/new があること
が整理されてない感じはしましたね。
つーか、まだBASIC/98って売ってるしWIndows10対応していて現役やん!これにもびくりしたよ
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
犯人は巨人ファンでA型で眼鏡をかけている -- あるハッカー
BASIC/98コンパイラ+EXEPACK (スコア:4, 興味深い)
別の解析担当(俺)によりますと、
使用言語:BASIC/98コンパイラ(バージョン不明)
EXEファイル軽量化:EXEPACKコマンドによる、リロケーション情報の圧縮
だと思われます。
BASIC/98コンパイラと判定した理由は、「エラーメッセージ中に構造化BASIC命令に対するエラーメッセージがある」ことです。
#やっぱりACで
Re:BASIC/98コンパイラ+EXEPACK (スコア:1)
exepackや当時のbasicコンパイラ知ってると解析まとめ見てああ、と思い当たるんだけど
その辺知らないで解析してるのは素直にすごいと思う。
Re: (スコア:0)
> その辺知らないで解析してるのは素直にすごいと思う
激しく同意です。
ここでは後出し番長がなんのかんの言ってるけど、リスクしかない
地雷案件受けてやり遂げるってのは対したもんだと思う。
Re: (スコア:0)
自分は98でdos時代diet使ってました
exe圧縮流行りましたねぇ、FDにどれだけ入るか
当時知らずに若さと知識でエイヤとできたのは確かにすごいですね
Re: (スコア:0)
https://twitter.com/roentgen/status/947509568141008897 [twitter.com]
なんかこの辺何言ってんだかわかんないけど構造化BASICではないことは読み取れるけど矛盾してね?
Re:BASIC/98コンパイラ+EXEPACK (スコア:1)
PC98あたりの時代って、スコープの概念とかルーチンの構造化、関数化とかなかったと思うのですが。
gosubで飛ぶのは、行番号指定だった気がするし、引数指定も無かったかと・・・
なので、「すべてのデータは、サブルーチンを抜けるときまで保持される」事はなく、全てグローバル変数で、サブルーチンだろうが何だろうが、変数の値を書き換えるとそれが結果になったと思います。
Re: (スコア:0)
構造化が無いとか行番号指定のみとかは旧来のBASIC(N88とか)でのお話。
当時の構造化BASICはたぶん C言語での枠組みを BASICに導入したもの。
たぶん、今回のはサブルーチン内のローカル変数は使えたんだろう。
一方、今時の言語でいうブロックは存在しない。
「すべてのデータは、サブルーチンを抜けるときまで保持される」は自然な挙動。
# ツリーが分岐してるので IDさんにぶら下げてみるテスト。
Re: (スコア:0)
N88-BASICだとラベルジャンプはあったように記憶してます
#行番号と大して違わんかったけど
Re: (スコア:0)
ブロックスコープがなくて、関数スコープのみってことじゃ?
# サブルーチン内でローカル変数使えるなら、構造化BASICって名乗ってもいいじゃない!
Re: (スコア:0)
Cコンパイラが生成したコードでもブロックスコープなんてフツー存在しないっしょ
Re: (スコア:0)
http://www.dennougumi.co.jp/products/basic98/ver5/index.html [dennougumi.co.jp]
BASIC/98 Ver.5の特長
・N88資産をラクラク継承
NECのN88BASIC(86)(MS-DOS版)の殆どのコマンド・ステートメント・関数を装備していますので、これまでのN88資産を、Windows上に容易に移植できます。
(中略)
・C言語並みの本格的構造化
構造化プログラミングをサポートする命令を数多く導入。行番号に依存しないハイレベルな構造化により、信頼性の高いプログラムを効率よく開発できます。
構造化命令により、構造化プログラミングをサポートするってのと、
作成されたプログラムが構造化されているってのは別の話では?
#ステマではない
Re: (スコア:0)
その売り言葉に乗せられた客と営業にえらい目にあわさせられたからなあ。
「N88BASICをDOS/Vに載せ直すだけです」
って、専用デバイスだらけじゃあそちらの手間の方が余りに大きい。
「このカード、Cバス用しかないじゃん」とかのレベルのはなしががが。
Re: (スコア:0)
このへんは
・構造化プログラム(if や while で goto 使わないブロックがあること)
・構造体があること
・ヒープの概念と malloc/new があること
が整理されてない感じはしましたね。
Re: (スコア:0)
つーか、まだBASIC/98って売ってるし
WIndows10対応していて現役やん!
これにもびくりしたよ