アカウント名:
パスワード:
現行プログラムの解析自体に、そのくらいの価値しかないという事でしょう。そんなことやってないで、さっさと仕事すればいいのに。募集するだけで、どれだけ時間使ってるのか知らないけどさ。(応募者との調整とかもろこみだと、30万なんかぶっ飛ぶだろうに)
まあこんなレベルの低い会社が自社開発した98で動くようなバイナリもせいぜいオンメモリで動くKB単位のプログラムだろうから実際内容は大したことないんだろう。リバースできる人はたくさんいるだろうけどこんな見ただけで腹が立つ乞食案件に来ないだけ。
レベル低い会社が開発 → プログラムも小規模であろう
この推論は馬鹿丸出し
> レベル低い会社が開発 → プログラムも小規模であろう>> この推論は馬鹿丸出し
98、当時のメモリ容量、オンメモリという要件がぽろぽろ落ちちゃってる仕様レベルバグを入れ込むお前の頭脳で他人様を評価すんな。
まあこんなレベルの低い会社が自社開発した98で動くようなバイナリもせいぜいオンメモリで動くKB単位のプログラムだろうから
#include <stdio.h>
int main(){ double a = 1.0, b = 2.0, c = 3.0; printf("%d + %d * %d = %f\n", a, b, c, a + b * d); return 0;}
Turbo C 2.0 で ↑ をコンパイルして生成される実行ファイルが 19172バイト。この程度の内容で「KB単位のプログラム」ですらないんだが。
これのexe解析するときは戸惑いそうだ。
このEXEが、当時あった改変保護機能付き自己展開型EXE生成ソフト「Mets File Shield」(8000円くらい)で自己展開型圧縮EXEにされていたら、さらに戸惑いそうですね。
展開して実行する他ないんだから、展開して実行する寸前でデバガで止めればわけない。
自分が「戸惑いそうだ」といったのは、%dしていでdouble入れてるからでした。えっって二度見するなと。ましてやココが要件のOUTPUT仕様に絡んでたりするときついなと。
あ、そうですね。ソーサーで、にわか逆アセンブルしてた時のイメージでいました。ランタイムデバッガがありましたねorz
そっちですか。%dとかは文字列としてexeから見つかり、しかし渡しているのが…んんっ?!ってなりそうですね。
dはどこに定義されてるんだ?
おっと、そっちのバグには気づかなかった。コンパイルできないじゃん...
あれ? 本当だ。#include <stdio.h>
int main(){ double a = 1.0, b = 2.0, c = 3.0; printf("%f + %f * %f = %f\n", a, b, c, a + b * c); return 0;}↑に訂正。サイズも19282バイトに訂正。
この頃のCってstdio.hだけで浮動小数点使えましたっけ?TCやBCが2.0や3.0の頃ならSMALLはprintf使用程度なら数kのexeで済んだ気がする。
> この頃のCってstdio.hだけで浮動小数点使えましたっけ?
浮動小数点数の型定義や演算はCの言語仕様でしょう。printfの浮動小数点数出力のフォーマットもK&Rに出てくる標準的なものですね。
「この頃のCって」が、Cもどきのサブセット言語処理系なら分からないですけど。
LSI C-86 Ver.3.30 試食版には整数版 printf() や scanf() が提供された intlib.lib というのがあったけども、時代に関係なく組み込み用 C コンパイラには珍しくはない機能だわな。
# つーか LSI C-86 自体が C もどきだしなあ。
よい突込みですね。PC-9801BX2としているので、CPUはIntel 486SXであり、FPUなしですから、FPUライブラリをリンクしているかFPUエミュレーションを別途常駐させているかいずれかでしょうね。まぁ、大概前者かな。あるいは遅くなるから整数値のみとかも当時はよくありましたね。
n88baisc.libとかついているならP-CODE読めるスキルが必要ですね。そういうことをやるなら「PC‐9801システム解析 (上)」がとても参考になることでしょう。
何もかもがとても懐かしいです。
これだけ簡単なプログラムをいくつかコンパイルすれば、スタートアップルーチン以外の標準ライブラリの場所やコードが推定できそうですね。
>Turbo C 2.0 で ↑ をコンパイルして生成される実行ファイルが 19172バイト。この程度の内容で「KB単位のプログラム」ですらないんだが。
19KBに見えますが
KB単位、と言うだけでは* 1-999KBまでで「MBにいかない」と言う意味なのか、* 1-9KBまでで「KBで1桁程度」と言う意味なのか、てのは判然としませんね
前後の文脈からして64KB以下って事だろうと思われますが
↓のどっからそう読み取ったのか詳しく
「せいぜいオンメモリで動くKB単位のプログラム」ってとこしか見てないですがね16ビットという事で64K
いや、あの……。16ビットと言っても、8086のアドレスバス幅は20ビットなんですが。当然、サイズが64Kを超えるオンメモリDOSプログラムも普通にあります。ご存じないので?
そんな規模のプログラムに仕様書もソースコードもないなんてあるのかなあ?なんちゃってな会社で客にも開発元にも常識もなく一人で1ヵ月以内でその場かぎりで作ったようなプログラムなんじゃね。
> 16ビットという事で64K
COMファイルならわからん話でもないけど、話題の件はEXEファイルだから64kB関係ないゾ
いや知ってますけどね元コメがそういう感じじゃなかったので「そういう風に読める」というハナシ
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
UNIXはシンプルである。必要なのはそのシンプルさを理解する素質だけである -- Dennis Ritchie
つまり (スコア:1)
現行プログラムの解析自体に、そのくらいの価値しかないという事でしょう。
そんなことやってないで、さっさと仕事すればいいのに。
募集するだけで、どれだけ時間使ってるのか知らないけどさ。(応募者との調整とかもろこみだと、30万なんかぶっ飛ぶだろうに)
Re: (スコア:0)
まあこんなレベルの低い会社が自社開発した98で動くようなバイナリもせいぜいオンメモリで動くKB単位のプログラムだろうから実際内容は大したことないんだろう。
リバースできる人はたくさんいるだろうけどこんな見ただけで腹が立つ乞食案件に来ないだけ。
Re: (スコア:-1)
レベル低い会社が開発 → プログラムも小規模であろう
この推論は馬鹿丸出し
Re: (スコア:0)
> レベル低い会社が開発 → プログラムも小規模であろう
>
> この推論は馬鹿丸出し
98、当時のメモリ容量、オンメモリという要件がぽろぽろ落ちちゃってる仕様レベルバグを入れ込むお前の頭脳で他人様を評価すんな。
Re:つまり (スコア:0)
まあこんなレベルの低い会社が自社開発した98で動くようなバイナリもせいぜいオンメモリで動くKB単位のプログラムだろうから
#include <stdio.h>
int main()
{
double a = 1.0, b = 2.0, c = 3.0;
printf("%d + %d * %d = %f\n", a, b, c, a + b * d);
return 0;
}
Turbo C 2.0 で ↑ をコンパイルして生成される実行ファイルが 19172バイト。この程度の内容で「KB単位のプログラム」ですらないんだが。
Re: (スコア:0)
これのexe解析するときは戸惑いそうだ。
Re:つまり (スコア:1)
このEXEが、当時あった改変保護機能付き自己展開型EXE生成ソフト
「Mets File Shield」(8000円くらい)で自己展開型圧縮EXEにされていたら、
さらに戸惑いそうですね。
Re: (スコア:0)
展開して実行する他ないんだから、展開して実行する寸前でデバガで止めればわけない。
Re: (スコア:0)
自分が「戸惑いそうだ」といったのは、%dしていでdouble入れてるからでした。
えっって二度見するなと。
ましてやココが要件のOUTPUT仕様に絡んでたりするときついなと。
Re:つまり (スコア:1)
あ、そうですね。
ソーサーで、にわか逆アセンブルしてた時のイメージでいました。
ランタイムデバッガがありましたねorz
Re:つまり (スコア:1)
そっちですか。
%dとかは文字列としてexeから見つかり、
しかし渡しているのが…んんっ?!
ってなりそうですね。
Re: (スコア:0)
dはどこに定義されてるんだ?
Re: (スコア:0)
おっと、そっちのバグには気づかなかった。
コンパイルできないじゃん...
Re: (スコア:0)
dはどこに定義されてるんだ?
あれ? 本当だ。
#include <stdio.h>
int main()
{
double a = 1.0, b = 2.0, c = 3.0;
printf("%f + %f * %f = %f\n", a, b, c, a + b * c);
return 0;
}
↑に訂正。
サイズも19282バイトに訂正。
Re: (スコア:0)
この頃のCってstdio.hだけで浮動小数点使えましたっけ?
TCやBCが2.0や3.0の頃ならSMALLはprintf使用程度なら数kのexeで済んだ気がする。
Re: (スコア:0)
> この頃のCってstdio.hだけで浮動小数点使えましたっけ?
浮動小数点数の型定義や演算はCの言語仕様でしょう。printfの浮動小数点数出力のフォーマットもK&Rに出てくる標準的なものですね。
「この頃のCって」が、Cもどきのサブセット言語処理系なら分からないですけど。
Re:つまり (スコア:1)
# printfから浮動小数点数の処理を排除してコンパクトにするとかの理由で
Re: (スコア:0)
LSI C-86 Ver.3.30 試食版には整数版 printf() や scanf() が提供された intlib.lib というのがあったけども、時代に関係なく組み込み用 C コンパイラには珍しくはない機能だわな。
# つーか LSI C-86 自体が C もどきだしなあ。
Re:つまり (スコア:1)
よい突込みですね。
PC-9801BX2としているので、CPUはIntel 486SXであり、FPUなしですから、FPUライブラリをリンクしているかFPUエミュレーションを別途常駐させているかいずれかでしょうね。
まぁ、大概前者かな。
あるいは遅くなるから整数値のみとかも当時はよくありましたね。
n88baisc.libとかついているならP-CODE読めるスキルが必要ですね。
そういうことをやるなら「PC‐9801システム解析 (上)」がとても参考になることでしょう。
何もかもがとても懐かしいです。
Re: (スコア:0)
これだけ簡単なプログラムをいくつかコンパイルすれば、スタートアップルーチン以外の標準ライブラリの場所やコードが推定できそうですね。
Re: (スコア:0)
>Turbo C 2.0 で ↑ をコンパイルして生成される実行ファイルが 19172バイト。この程度の内容で「KB単位のプログラム」ですらないんだが。
19KBに見えますが
Re:つまり (スコア:2)
KB単位、と言うだけでは
* 1-999KBまでで「MBにいかない」と言う意味なのか、
* 1-9KBまでで「KBで1桁程度」と言う意味なのか、てのは判然としませんね
前後の文脈からして64KB以下って事だろうと思われますが
Re: (スコア:0)
前後の文脈からして64KB以下って事だろうと思われますが
↓のどっからそう読み取ったのか詳しく
まあこんなレベルの低い会社が自社開発した98で動くようなバイナリもせいぜいオンメモリで動くKB単位のプログラムだろうから実際内容は大したことないんだろう。
リバースできる人はたくさんいるだろうけどこんな見ただけで腹が立つ乞食案件に来ないだけ。
Re:つまり (スコア:2)
「せいぜいオンメモリで動くKB単位のプログラム」ってとこしか見てないですがね
16ビットという事で64K
Re: (スコア:0)
いや、あの……。
16ビットと言っても、8086のアドレスバス幅は20ビットなんですが。
当然、サイズが64Kを超えるオンメモリDOSプログラムも普通にあります。
ご存じないので?
Re: (スコア:0)
そんな規模のプログラムに仕様書もソースコードもないなんてあるのかなあ?
なんちゃってな会社で客にも開発元にも常識もなく一人で1ヵ月以内でその場かぎりで作ったようなプログラムなんじゃね。
Re: (スコア:0)
> 16ビットという事で64K
COMファイルならわからん話でもないけど、話題の件はEXEファイルだから64kB関係ないゾ
Re:つまり (スコア:1)
Re:つまり (スコア:2)
いや知ってますけどね
元コメがそういう感じじゃなかったので「そういう風に読める」というハナシ