アセンブリ言語最強伝説
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2008/01/10(木) 17:03:37よって機械語と1対1に対応しているアセンブリ言語はどんなものでも書けることになる。
ゆえにアセンブリにできないことはない。
0153デフォルトの名無しさん
2009/08/01(土) 15:13:13最後の行、論理シフトだから「等価」と違うと思うよ。
0154デフォルトの名無しさん
2009/08/01(土) 17:17:53解説ありがとうございます
>>152
CPUはCore2 DuoのE8600を使っています
0155デフォルトの名無しさん
2009/08/01(土) 18:30:47あれは辞書と同じで使いつつ覚えるもの。
0156デフォルトの名無しさん
2009/08/01(土) 20:23:060157デフォルトの名無しさん
2009/08/01(土) 20:25:59言っちゃ悪いが意味不明だ。
0158デフォルトの名無しさん
2009/08/01(土) 20:30:46できるのは、OSに指示を出すだけだ。またはハードウェアに。
0159デフォルトの名無しさん
2009/08/01(土) 20:33:330160デフォルトの名無しさん
2009/08/01(土) 20:41:21>>156 はスレッデッドコードみたいな技法のことを言いたいんだろうか?
0161デフォルトの名無しさん
2009/08/01(土) 20:48:46超エスパーだなw
0162デフォルトの名無しさん
2009/08/02(日) 13:55:350163デフォルトの名無しさん
2009/08/02(日) 13:56:410164デフォルトの名無しさん
2009/08/02(日) 14:07:04int割り込みでコンソールIOってのが一番分りやすい例かも。
アセンブリ言語以外の言語でいうAPIとはかなり毛色が違うが、これもAPIの一種…というかAPIの元ネタだよな。
Windowsとかでも、カーネルモードへの入り口としてSYSENTERって形で残ってる。
ラッピングされてて普通は触らないというか触れないが。
0165デフォルトの名無しさん
2009/08/02(日) 14:55:070166デフォルトの名無しさん
2009/08/02(日) 14:59:09システムコールを発行できる。
0167デフォルトの名無しさん
2009/08/02(日) 15:04:39それって何の意味があるの?
callと比べて
0168デフォルトの名無しさん
2009/08/02(日) 15:12:540169デフォルトの名無しさん
2009/08/02(日) 15:18:11>それって何の意味があるの?
そうゆう決まりになってるから
0170デフォルトの名無しさん
2009/08/02(日) 15:21:02callだとlibcをリンクしないといけないだろ。
少しは自分の頭で考えろよ。
0171デフォルトの名無しさん
2009/08/02(日) 15:31:21linuxのABIは酷いからな
それらに影響されたくなかったわけか
0172デフォルトの名無しさん
2009/08/02(日) 17:08:260173デフォルトの名無しさん
2009/08/02(日) 17:09:500174デフォルトの名無しさん
2009/08/02(日) 17:49:300175デフォルトの名無しさん
2009/08/02(日) 22:17:550176デフォルトの名無しさん
2009/08/02(日) 22:26:520177デフォルトの名無しさん
2009/08/02(日) 22:45:13DOSもそうだった。
386BSDは確かコールゲート経由だったが
それ以外は多くがintだな。
今は結構sysenterになってるみたいだが。
例えばNT系のWindowsも、システムコールはint2Eだという話を聞いた覚えがある。
信憑性は知らんが。
その手のシステムコール呼び出しを
POSIXならopen()というAPI、Win32ならCreateFile()というAPIとして公開している、という点では皆同じ。
0178デフォルトの名無しさん
2009/08/03(月) 00:31:180179デフォルトの名無しさん
2009/08/03(月) 01:47:420180デフォルトの名無しさん
2009/08/03(月) 02:04:21http://www.ctyme.com/intr/rb-4249.htm
NT/2Kなら、これで直接呼び出すことも出来るはず。
パラメータの説明が無いから殆どは無理だろうけどね。
sysenterに移行したXP以降でもint2Eのインターフェースが残っているかは知らない。
0181デフォルトの名無しさん
2009/08/03(月) 02:36:18してるはず。
LinuxでもCPUに応じてsysenterやsyscallを使える。
0182デフォルトの名無しさん
2009/08/05(水) 06:24:33今日は何をするのかな〜
「ウホホホホウホ」
おやおや
ゴン太くん
今日も張り切ってますね
0183デフォルトの名無しさん
2009/08/06(木) 21:12:03これって、カーネル2.25辺りまでしか使えないのでは?
カーネル2.30ではこの仕様ではないですよね?
>Linuxだとsyscall番号と引数をレジスタに設定してint 0x80で
>システムコールを発行できる。
0184デフォルトの名無しさん
2009/08/06(木) 22:21:170185デフォルトの名無しさん
2009/08/07(金) 01:34:01ロクな事にならねぇぞ
0186デフォルトの名無しさん
2009/08/07(金) 01:39:590187デフォルトの名無しさん
2009/08/07(金) 03:03:32アホか?使えるに決まってるだろ。使えないと思う理由は何だ?
0188デフォルトの名無しさん
2009/08/22(土) 18:58:58オープンソースとか嫌がらせ以外のなにものでもないよ
0189デフォルトの名無しさん
2009/08/22(土) 19:39:380190デフォルトの名無しさん
2009/08/22(土) 20:58:04おっとGNUやLinuxの悪口はそこまでだ。
0191デフォルトの名無しさん
2009/08/23(日) 03:13:42インデントのある言語は、そこで俺の思考も一緒にインデント
されてしまうから、思考が続かないんだ。
0192デフォルトの名無しさん
2009/08/23(日) 05:23:37それはそれで凄いのだろうが、書いたソースを読みたくないな。
0193デフォルトの名無しさん
2009/08/23(日) 05:37:290194デフォルトの名無しさん
2009/08/23(日) 05:44:090195デフォルトの名無しさん
2009/08/23(日) 07:11:47COBOLも、制御構造が導入されてから読みにくくなった。
インデントが多くなったし、外PERFORMでやたらと処理を外出しするので
飛んでから戻ってくるのが大変だ。
やっぱアセンブラだね。
アセンブラが主流の開発現場ってどういうのがあるんだろう。
天職に転職したい、なんちて。
0196デフォルトの名無しさん
2009/08/23(日) 07:38:04外出しもする
0197デフォルトの名無しさん
2009/08/23(日) 09:27:274bitCPUとかならアセンブラが主流。
つうかそれ以外の選択肢がない。
0198デフォルトの名無しさん
2009/08/23(日) 09:41:41最適化-Osは結構アホなのでインラインアセンブラも使います
0199デフォルトの名無しさん
2009/08/23(日) 11:01:26外出ししないのはBrainF*ckくらい
0200デフォルトの名無しさん
2009/08/23(日) 14:30:22BASICで言うGOTOはあるが、GOSUBはないよね?
0201デフォルトの名無しさん
2009/08/23(日) 14:43:34命令単体で無くても組み合わせでつくれるだろ
0202デフォルトの名無しさん
2009/08/23(日) 14:45:20お前アセンブリプログラミングしたことないだろ
GOSUBどころか関数呼び出しが出来るアセンブリ言語なんていくらでもある
0203デフォルトの名無しさん
2009/08/23(日) 15:00:266502と68000をやっていたが、
戻り先を指定しないRETURN的な
構文はなかったような気がするぞ。
今のCPUは違うのか。
世の中の言語が俺に合わせてくれないなら、
自分で作るしかないな。
インデント禁止、分岐はラベル指定ジャンプのみ、
構造化なし、オブジェクト指向なし、ソース分割禁止、
変数はアルファベット一文字のみの俺言語を。
やってみるぜ!
0204デフォルトの名無しさん
2009/08/23(日) 15:06:04おまえは何をやってきたんだ。
0205デフォルトの名無しさん
2009/08/23(日) 15:09:170206デフォルトの名無しさん
2009/08/23(日) 15:15:21しかもコボラ・・・
>>197
あと、ICカードレベルの極端に制約のある組み込み系と、カスタムLSI/CPUがある系もアセンブリ言語が結構必要な気がするんだが。
前者はメモリ容量と演算速度の制約があるから付加機能を持たせたかったらアセンブリ言語ナシだときつそうだし、後者はカスタムした命令セットの操作に必要になってくるだろう。
・・・インラインで済むかもしれないが。
0207デフォルトの名無しさん
2009/08/23(日) 15:27:38関数呼び出しも知らずに仕事でコーディングしてたと思うとぞっとするわ
0208デフォルトの名無しさん
2009/08/23(日) 15:34:24そっち方面一筋だったとしたらしょうがないかもしれない。
いちじるしく不幸だと思うが。
0209デフォルトの名無しさん
2009/08/23(日) 16:39:36これ、コボラですらないだろ。
煽りたがりの嘘つき中学生。
0210デフォルトの名無しさん
2009/08/23(日) 17:05:40…自分の親父と同世代だとすると、吐き気がするw
0211デフォルトの名無しさん
2009/08/23(日) 17:45:44RTS、調べてみたらあるね。
俺のいた職場では教えてくんなかった。なぜだろう。
まあどのみち使わないからいいんだけど。
では、これから理想の俺言語を作るからさらばだ。
C言語を勉強して、言語仕様を設計して・・・20年はかかるかな。
いいライフワークになりそうだ。
0212デフォルトの名無しさん
2009/08/23(日) 18:00:12> まあどのみち使わないからいいんだけど。
んなわけねーだろ
0213デフォルトの名無しさん
2009/08/23(日) 18:56:16やはりコボラは害にしかならないのですねー・・・
0214デフォルトの名無しさん
2009/08/23(日) 19:49:350215デフォルトの名無しさん
2009/08/24(月) 02:56:49(Fortranの時代) cでvoid型も関数と言うようになってから、関数と手続きの区別が曖昧に
なってきた。オブジェクト指向が登場して手続き型言語が叩かれるようになり、手続きという
単語そのものも嫌われるようになっていった。 くくり出しの概念自体は一緒なのにね。
0216デフォルトの名無しさん
2009/08/24(月) 03:14:080217デフォルトの名無しさん
2009/08/24(月) 08:24:26void main(void){
とか
main(){
で始まってたな。これって、86系アセンブラだとah=43h/int 21hのDOSファンクションコールで
alの値を指定しないのと、本質的に同じだよね。これはアセンブラの場合、容量とかの
都合で指定しなかったのか、戻り値をDOSに返すのはどうでもよかったのか?
いまでもアセンブラ解説サイトの大御所でたまに散見される。
0218デフォルトの名無しさん
2009/08/24(月) 08:34:490219デフォルトの名無しさん
2009/08/24(月) 10:24:48ほぼ使わないし。連続して処理を繰り返すなら復旧可能なエラーでプログラム終了
させてDOSへ戻るなんて馬鹿馬鹿しい。続行不可能なエラーならエラーコード吐いた
ってOSが後始末してくれるわけじゃないし。自前で後始末しなけりゃいけないなら、
エラー処理もプログラム内でやって、続行不可能になったらエラーメッセージ吐いて
abortした方がいい。
というか、正常終了で0を返さないと誤動作する糞OSってあんの?
0220デフォルトの名無しさん
2009/08/24(月) 10:55:35Cで返り値の型を省略したら普通は整数型として扱われる
0221217
2009/08/24(月) 11:31:30というか、
mov ah, 4ch
int 21h
とするのと、
mov ax, 4c00h
int 21h
とするのとで、ものすごく手間とかバイト数が増えるわけでも実行クロックが増えるわけでも
ないのに、alの値を省略するのが理解できない。「洗練されたコード」を目指すにせよ
そうでないにせよ。他のルーチンはちゃんと書いてるのに、最後いきなりahのみ
ぶち込んでOSに戻るのか、と。DOSが糞かどうかより、後先考えてなかったのかな?
「立つ鳥あとを…」派より「あとは野となれ…」の人が多かったのか、
実はAX=4C00H派は普通にいたのか。
Cの場合はANSIがらみだよね。ANSI以前の参考書で正常終了時のmain関数の戻り値を
return 0;
でDOSに戻すコードはあまりなかった、自分のみた範囲では。
0222デフォルトの名無しさん
2009/08/24(月) 11:54:35最初から用語の意味はブレてたんだよ。
void main は、
仕様書読まずに教科書を書くバカがいた、でファイナルアンサー。
少なくともANSI以後については。
0223デフォルトの名無しさん
2009/08/24(月) 11:57:33そういう人たちはC言語の仕様をどうでもいいと思ってる
(仕様なんかどうでもいい、コンパイラの動いた結果が全て)
という人がいるせいかもしれない。
0224デフォルトの名無しさん
2009/08/24(月) 12:46:04っていう意見もあった。
逆にC言語の話してるのに函数だって譲らない人もいた。
ま、いろいろ。
0225デフォルトの名無しさん
2009/08/24(月) 13:01:59Lispとかは関数型言語という使い分けができるな。
0226デフォルトの名無しさん
2009/08/24(月) 13:04:030227デフォルトの名無しさん
2009/08/24(月) 17:26:50だからmov ah, 4chでいい。
0228デフォルトの名無しさん
2009/08/24(月) 19:55:570229デフォルトの名無しさん
2009/08/24(月) 19:57:33誤動作はしないが、一々警告が出るOS(正確にはGUI型コマンドインタプリタ)は実在した。
0230デフォルトの名無しさん
2009/08/24(月) 19:57:440231デフォルトの名無しさん
2009/08/24(月) 20:02:03だったらいっそ int 20h か ret でいいじゃない。
0232デフォルトの名無しさん
2009/08/24(月) 20:55:41int main(void)
は正しいだろうけど
void main(void)
はとても有名な間違いで、本来は違反じゃなかったか
それに型省略は暗黙でintってのが(C++には無いけれど)Cには有ったはず
>>218
MSDNでもそこかしこにプロシージャという単語やその名残が有ると思うんだが
でも関数の方が呼びやすいのでそう読んでる自分
>>219
Makeとかその辺の奴に食わせる場合は戻り値必須。
コンパイラとかもちゃんと値返してるんだぞ
>>221
void mainとか、C「言語」とかと同じで、間違いの文化の中に居るのさ〜
0233デフォルトの名無しさん
2009/08/24(月) 21:22:40> void main(void)
> はとても有名な間違いで、本来は違反じゃなかったか
つc99
0234デフォルトの名無しさん
2009/08/24(月) 22:16:57無限ループで戻らない処理では論理が破綻するからやめてほしい。
戻らないんだから値は返しようがない。
0235デフォルトの名無しさん
2009/08/24(月) 22:30:15int a=0;
printf("%d", a);
}
このときのALはprintfの戻り値
0236デフォルトの名無しさん
2009/08/24(月) 23:44:49C++では、「return 0; の省略」は許されるけど、
「void main()」が許されているわけじゃない、というのは俺も知ってる。
C99はよく知らないけど、
C++とは違って void main() も許されるようになったのか?
0237デフォルトの名無しさん
2009/08/24(月) 23:50:21>>235
実際やればそうなることが多い気はするけれど、保証動作では無いような・・・
0238デフォルトの名無しさん
2009/08/25(火) 03:07:13出るのはmainからじゃなくて、電源断がNMIにつながってるときだけだし。
0239デフォルトの名無しさん
2009/08/25(火) 07:36:08組み込みならスタートアップ指定するだろ
mainなんてわざわざ呼んでたら復帰アドレス分のスタックがもったいない
0240デフォルトの名無しさん
2009/08/25(火) 07:45:010241デフォルトの名無しさん
2009/08/25(火) 07:56:14大抵のスタートアップコードはアホだから修正が必要だ
0242デフォルトの名無しさん
2009/08/25(火) 08:01:590243デフォルトの名無しさん
2009/08/25(火) 08:18:540244デフォルトの名無しさん
2009/08/25(火) 09:20:32関数の呼び出し処理にも関係がある。
だから、戻らない関数だから関係ない、とは言えない。
0245デフォルトの名無しさん
2009/08/25(火) 10:10:590246デフォルトの名無しさん
2009/08/25(火) 11:47:280247デフォルトの名無しさん
2009/08/25(火) 12:22:550248デフォルトの名無しさん
2009/08/25(火) 12:32:14PC16以下は死んでいい
0249デフォルトの名無しさん
2009/09/22(火) 16:01:470250デフォルトの名無しさん
2009/09/22(火) 16:03:41nop
nop
nop
.
.
.
0251デフォルトの名無しさん
2009/09/23(水) 14:43:34こちらの世界に戻れなくなるぞ
0252デフォルトの名無しさん
2009/09/23(水) 16:48:40or eax,1
mov cr0,eax
jmp @@tengoku
@@tengoku:
■ このスレッドは過去ログ倉庫に格納されています