アセンブリ言語最強伝 ..
220:デフォルトの名無しさん
09/08/24 10:55:35
>>217
Cで返り値の型を省略したら普通は整数型として扱われる
221:217
09/08/24 11:31:30
>>219
というか、
mov ah, 4ch
int 21h
とするのと、
mov ax, 4c00h
int 21h
とするのとで、ものすごく手間とかバイト数が増えるわけでも実行クロックが増えるわけでも
ないのに、alの値を省略するのが理解できない。「洗練されたコード」を目指すにせよ
そうでないにせよ。他のルーチンはちゃんと書いてるのに、最後いきなりahのみ
ぶち込んでOSに戻るのか、と。DOSが糞かどうかより、後先考えてなかったのかな?
「立つ鳥あとを…」派より「あとは野となれ…」の人が多かったのか、
実はAX=4C00H派は普通にいたのか。
Cの場合はANSIがらみだよね。ANSI以前の参考書で正常終了時のmain関数の戻り値を
return 0;
でDOSに戻すコードはあまりなかった、自分のみた範囲では。
222:デフォルトの名無しさん
09/08/24 11:54:35
元々数学の意味では副作用がないのが関数なんだから、
最初から用語の意味はブレてたんだよ。
void main は、
仕様書読まずに教科書を書くバカがいた、でファイナルアンサー。
少なくともANSI以後については。
223:デフォルトの名無しさん
09/08/24 11:57:33
アセンブリ言語系の話題のサイトで見かけるのは、
そういう人たちはC言語の仕様をどうでもいいと思ってる
(仕様なんかどうでもいい、コンパイラの動いた結果が全て)
という人がいるせいかもしれない。
224:デフォルトの名無しさん
09/08/24 12:46:04
数学のfunctionは函数だから、関数はぜんぜん違う物だと思えばいい。
っていう意見もあった。
逆にC言語の話してるのに函数だって譲らない人もいた。
ま、いろいろ。
225:デフォルトの名無しさん
09/08/24 13:01:59
そのロジックだとHaskellとその近辺は函数型言語
Lispとかは関数型言語という使い分けができるな。
226:デフォルトの名無しさん
09/08/24 13:04:03
スレ違いもいい加減にしろ
227:デフォルトの名無しさん
09/08/24 17:26:50
参照しないんだから値は不定でいい。
だからmov ah, 4chでいい。
228:デフォルトの名無しさん
09/08/24 19:55:57
DOS使ってた頃はERRORLEVELやmakeで参照しまくりだったがなぁ
229:デフォルトの名無しさん
09/08/24 19:57:33
>>219
誤動作はしないが、一々警告が出るOS(正確にはGUI型コマンドインタプリタ)は実在した。
230:デフォルトの名無しさん
09/08/24 19:57:44
DOSだとかジジイばっかりだな
231:デフォルトの名無しさん
09/08/24 20:02:03
>>227
だったらいっそ int 20h か ret でいいじゃない。
232:デフォルトの名無しさん
09/08/24 20:55:41
>>217
int main(void)
は正しいだろうけど
void main(void)
はとても有名な間違いで、本来は違反じゃなかったか
それに型省略は暗黙でintってのが(C++には無いけれど)Cには有ったはず
>>218
MSDNでもそこかしこにプロシージャという単語やその名残が有ると思うんだが
でも関数の方が呼びやすいのでそう読んでる自分
>>219
Makeとかその辺の奴に食わせる場合は戻り値必須。
コンパイラとかもちゃんと値返してるんだぞ
>>221
void mainとか、C「言語」とかと同じで、間違いの文化の中に居るのさ〜
233:デフォルトの名無しさん
09/08/24 21:22:40
>>232
> void main(void)
> はとても有名な間違いで、本来は違反じゃなかったか
つc99
234:デフォルトの名無しさん
09/08/24 22:16:57
でも型を規約で無意味に強制されると
無限ループで戻らない処理では論理が破綻するからやめてほしい。
戻らないんだから値は返しようがない。
235:デフォルトの名無しさん
09/08/24 22:30:15
void main(void){
int a=0;
printf("%d", a);
}
このときのALはprintfの戻り値
236:デフォルトの名無しさん
09/08/24 23:44:49
>>233
C++では、「return 0; の省略」は許されるけど、
「void main()」が許されているわけじゃない、というのは俺も知ってる。
C99はよく知らないけど、
C++とは違って void main() も許されるようになったのか?
237:デフォルトの名無しさん
09/08/24 23:50:21
少なくとも、その間違いを喧伝していた絶頂期にはC99は存在しない。
>>235
実際やればそうなることが多い気はするけれど、保証動作では無いような・・・
238:デフォルトの名無しさん
09/08/25 03:07:13
俺、組み込みばかりだから void main(void) がもう刷り込まれちゃってるよ。
出るのはmainからじゃなくて、電源断がNMIにつながってるときだけだし。
239:デフォルトの名無しさん
09/08/25 07:36:08
>>238
組み込みならスタートアップ指定するだろ
mainなんてわざわざ呼んでたら復帰アドレス分のスタックがもったいない
240:デフォルトの名無しさん
09/08/25 07:45:01
printfの戻り値w
241:デフォルトの名無しさん
09/08/25 07:56:14
まあcall mainじゃなくてjmp mainだよな
大抵のスタートアップコードはアホだから修正が必要だ
242:デフォルトの名無しさん
09/08/25 08:01:59
stack+1してからcallmain
243:デフォルトの名無しさん
09/08/25 08:18:54
bra _main
244:デフォルトの名無しさん
09/08/25 09:20:32
関数の戻す型は、関数の脱出処理だけでなく、
関数の呼び出し処理にも関係がある。
だから、戻らない関数だから関係ない、とは言えない。
245:デフォルトの名無しさん
09/08/25 10:10:59
PICのスタックは8段しかない
246:デフォルトの名無しさん
09/08/25 11:47:28
8bitなPICでC言語を使うのが間違っているような気がしないでもない。
247:デフォルトの名無しさん
09/08/25 12:22:55
kwsk
248:デフォルトの名無しさん
09/08/25 12:32:14
PIC18やAVRなら実用的だよ
PC16以下は死んでいい
249:デフォルトの名無しさん
09/09/22 16:01:47
HALT ?
250:デフォルトの名無しさん
09/09/22 16:03:41
nop
nop
nop
nop
.
.
.
251:デフォルトの名無しさん
09/09/23 14:43:34
最終的に機械と同化してしまい
こちらの世界に戻れなくなるぞ
252:デフォルトの名無しさん
09/09/23 16:48:40
mov eax,cr0
or eax,1
mov cr0,eax
jmp @@tengoku
@@tengoku:
253:デフォルトの名無しさん
09/09/24 06:28:22
そこは天国なのか?
つまらん壁はなくなるが、色々監視されて鬱陶しいことになったりするぞ。
254:デフォルトの名無しさん
09/09/24 10:03:18
そこでセグメントのリミットを4Gに設定して
そのままリアルモードに戻ったところが本当の天国
255:デフォルトの名無しさん
09/09/24 18:05:13
シングルタスクが天国?
マルチタスクの方が圧倒的に便利でしょ
256:デフォルトの名無しさん
09/09/24 20:01:51
>>255 リアルモードでマルチタスクができないって話は聞いたことないな
257:デフォルトの名無しさん
09/09/25 09:48:27
なんでいきなりシングル/マルチタスクの話を始めたのかと思えば
なるほど、そーゆー恥ずかしい勘違いをしてる人だったのか。
258:デフォルトの名無しさん
09/09/25 11:37:57
ノンプリエンプティブかプリエンプティブかで、だいぶ話がかわるな。
あと、保護のある環境を天国と見るか、ない環境を天国と見るかは
意見の分かれるところだ。
259:デフォルトの名無しさん
09/11/23 13:16:47
保護のある環境だと機械語で書きにくそう
260:デフォルトの名無しさん
09/11/23 13:28:23
I/Oとかの特権命令を使いまくった何かを作りたいならそうかもしれないけど、
保護で落とされるのは、あらぬアドレスにアクセスしたとか、おかしな動作
だから、普通のコードを書くぶんにはたいして変わらないよ。
261:デフォルトの名無しさん
09/11/26 23:51:51
MASMからVC++用スタティックライブラリの関数を呼ぶ方法を教えてほしい
262:デフォルトの名無しさん
09/11/26 23:57:20
スタティックライブラリのアセブラソースをみる
263:デフォルトの名無しさん
09/11/26 23:57:49
pushしてfarcall
264:デフォルトの名無しさん
09/11/27 05:38:08
VC++が生成したASMファイルは↓で呼び出してるけどリンクできない
無理だったのであきらめた・・・
call ?function@namespace@@YAHXZ:PROC
265:デフォルトの名無しさん
09/11/27 17:04:26
GetProcAddresすればいいんじゃね?
266:デフォルトの名無しさん
09/11/27 20:06:27
まずは、extrnとかでちゃんと外部シンボルの宣言をしているか、ということ
次に、ちゃんとlibを指定しているか、ということ
後者は、コンパイラに#pragma comment(lib,..)を出力させて、
アセンブラディレクティブでどうなっているか確認することで
アセンブラコードの内部で対応できるかもしれない。
267:デフォルトの名無しさん
10/01/02 04:51:36
バイナリいじって一時的に別名つけるとか。
たしか「?」とかはそうしないと無理だった気がする。
268:デフォルトの名無しさん
10/01/15 01:30:45
Mac 買ったら NASM が入ってた。
勿論 gas も入ってるけど、何か新鮮。
269:デフォルトの名無しさん
10/01/15 04:09:44
MacsBug for x86とかついてきそうだ。
270:デフォルトの名無しさん
10/01/15 08:14:34
懐かしいな…
271:デフォルトの名無しさん
10/02/20 06:03:09
tasm32でvc60とlinkできるぞ。objの形が違うとwarning出るけど。
272:デフォルトの名無しさん
10/03/07 00:34:54
masm32 nasm gas
学習用途ではどれがオススメですか?
ちなみにターゲットはx86オンリーでdos、win、linuxあたりです。
273:デフォルトの名無しさん
10/03/07 02:11:41
あえてのnask
274:デフォルトの名無しさん
10/03/07 02:14:47
>>272
学習用途ならCASLに決まってんだろ!
275:デフォルトの名無しさん
10/03/07 17:44:10
linux含む時点でmasm32は消えるな
学習用途な時点で癖のあるgasは消えるな
x86オンリーならx64なnasmは消えるな
すると残るのは・・・やはりCASLしか無いね
276:デフォルトの名無しさん
10/03/07 18:43:01
asm80
277:デフォルトの名無しさん
10/03/08 05:38:16
機械語最強
278:デフォルトの名無しさん
10/03/08 09:26:49
>>272
正道に勝るもの無し。
MS純正のMASMとIntelが配布してるデベロッパーズマニュアルの組み合わせが一番良い。
どうしてもgasを使うなら.intel_syntaxディレクティブを「必ず」指定する事。
どうせならdosとlinuxを捨てなさい。現実的な選択肢とは言えないから。
279:デフォルトの名無しさん
10/03/08 10:22:30
マシン語やれよ
x86ならオペコード表とModRMの使い方マスターするだけでかなり読み書きできるようになるから
アセンブラの構文がどうとかみたいなどうでもいいことが気にならなくなる
280:デフォルトの名無しさん
10/03/08 14:03:25
機械語はできる前提のスレなんだが。
>>279は今更何言ってんだ?
281:デフォルトの名無しさん
10/03/08 14:06:18
アセンブリ言語および機械語の総合スレが落ちて、そこらへんにあった
それ系スレを適当に潰してる状況だというのに何を言うか。
282:デフォルトの名無しさん
10/03/08 16:21:33
∩_∩ 人人人人人人人人人人人人人人人人人人人人人人人人人人人人人
/ \ /\ < なんだろう。 >
| (゚)=(゚) | < >
| ●_● | < >
/ ヽ < >
| 〃 ------ ヾ | < >
\__二__ノ YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY
283:デフォルトの名無しさん
10/03/09 21:05:25
>>279
自分はそれに気付くまで大分遠回りしたわ…
先にマシン語をちょっと齧っておくと大分理解が速いよね。
>>275
NASM が x64 ってどういう事?
x86 でも使えるでしょ。
284:デフォルトの名無しさん
10/03/09 21:56:21
ようやく突込みが入ったか
これで安心して死ねる
285:デフォルトの名無しさん
10/03/11 00:11:53
>>272
一つに絞らず、それぞれのプラットフォームで一番使われてる物を選んだ方が良いよ。
その意味で、Windows でやる時は masm を、Linux の時は gas を使うと良いと思う。
勉強がある程度進めばシンタックスの差は誤差である事に気付くと思うけど、どうしても
気持ち悪いと思ったら、その時に nasm を選択すると良いと思う。
286:デフォルトの名無しさん
10/03/11 05:37:14
誤差じゃねえよ!ニモニック自体違ってるじゃねえか!
287:デフォルトの名無しさん
10/03/11 13:45:55
またコンパイラ自作か!
最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
5350日前に更新/64 KB
担当:undef