アセンブリ言語最強伝 ..
[2ch|▼Menu]
116:デフォルトの名無しさん
09/07/09 23:37:36
>>113
それMIPSのコードだろ?SPIM使って実行すればすぐ分かるだろうが

117: ◆Vn6tEMH3IE
09/07/09 23:41:43
>>107=>>108=>>110=>>115
スパム…?調べてみます。

118:デフォルトの名無しさん
09/07/09 23:42:07
PC-98って今も売っていますか?

119:デフォルトの名無しさん
09/07/09 23:44:53
スパム・・じゃねぇえ

120:デフォルトの名無しさん
09/07/09 23:48:28
どう考えてもbeqじゃなくてbneqだろ。そうすれば1から10までの総和計算になるから
意味が通る。それだけは最低教授に確認しろ。
ちなみにSPIMはMIPS32シミュレーターの名前だ。

121:120
09/07/09 23:50:45
bneqじゃなくてbneだったか。

122:デフォルトの名無しさん
09/07/09 23:59:20
>>120
bneが≠だとすると値はそれぞれどんどん離れていき・・

$2 $4
0 10
10 10
10 9
19 8
27 7

でも符号が反転してどこかで終わるかな?

123:120
09/07/10 00:03:32
>>122
お前相当な馬鹿だな。どこの大学だ?
$4が0になったときに終わるだろうが。

124:デフォルトの名無しさん
09/07/10 00:05:42
>>123
あああ気付いて書き込もうと思ったら間に合わなかったあああ
ありがとうございます。
最近彼氏と別れたからあなたに惚れそうです。

125:120
09/07/10 00:06:57
>>124
俺は馬鹿は嫌いだ。ついでに女は間に合ってる。

126:デフォルトの名無しさん
09/07/10 00:10:04
>>125
さすが、彼女がいる男って優しいんだよな;;
大学は明治でした。ほんとサーセンww

127:デフォルトの名無しさん
09/07/10 00:23:14
馬鹿な女の魅力を知らないとは。。。

だから124は俺がもらっていきますね

128:デフォルトの名無しさん
09/07/10 04:49:07
124を読んでも「彼氏と別れた」とあるだけだ。女とは限らないぞ。
アッーみたいな。


129:デフォルトの名無しさん
09/07/11 08:57:54
女は間に合ってる、と言ってるな。
やはり120はガチホモか。

>>120
やらないか?

130:デフォルトの名無しさん
09/07/30 08:55:56
アルファベットの小文字と大文字の範囲をXORでくっつける技があったと思うんだけど
忘れてしまった。どうやるかわかる人いる?

131:デフォルトの名無しさん
09/07/30 09:30:30
A - Z = 0100 0001 - 0101 1010
a - z = 0110 0001 - 0111 1010

C = c xor 0010 0000


132:デフォルトの名無しさん
09/07/30 11:55:25
どもども!

133:デフォルトの名無しさん
09/07/30 12:07:33
えっと、それだと、
大文字と小文字を入れ替えるだけじゃない?

134:デフォルトの名無しさん
09/07/30 17:48:49
くっつけるってどういう意味?
0x41-0x5A + 0x61-0x7A を 0x00-0x33 にするっていうこと?

135:デフォルトの名無しさん
09/07/30 17:58:56
URLリンク(homepage1.nifty.com)
これのことでしょ?
ここではShiftJISの判定だけど

136:デフォルトの名無しさん
09/07/30 18:08:20
それだともともとアルファベットの小文字と大文字の範囲はくっついてるんじゃないか


137:デフォルトの名無しさん
09/07/30 18:59:47
質問者です。解答を信じてちゃんと中身まですぐに確認しなかったのだけども
>>135これです。ありがとう。

138:デフォルトの名無しさん
09/07/30 19:50:51
1文字の入力してキャラクタコードを2進数と16進数で表示するコードを作りたいのですがここからわからなくなりました
ご教授お願いします
Code segment
Code ends
Data segment
Data ends
Stack segment stack
Stack ends
Data segment
Data ends
Stack segment stack
dw 100h dup(?)
Stack ends

Code segment
assume cs:Code,ds:Data,ss:Stack
Main proc near
mov ax,Data
mov ds,ax

Main_LOOP:



139:138
09/07/30 19:52:31
mov ah,01h
int 21h

cmp al,0Dh
je Main_EXIT

push ax
mov dl,' ' ;区切り用に空白を表示する
mov ah,02h ;
int 21h
pop ax

push ax
call BIN2BIN
pop ax
call BIN2HEX

jmp Main_LOOP

Main_EXIT:
mov ax,4C00h ;return to MS-DOS
int 21h ;
Main endp

140:デフォルトの名無しさん
09/07/30 19:53:12
;キャラクタコードを2進数で表示する変換サブルーチン

BIN2BIN proc near
mov bl,al
mov cx,8
B2B_1:
shl bl,1
mov dl,00h ;

adc dl,30h
mov ah,02h
int 21h ;

loop B2B_1

mov dl,'b' ;表示した2進数の最後にbを表示する
mov ah,02h ;
int 21h ;

mov dl,' ' ;区切り用に空白を表示する
mov ah,02h ;
int 21h ;

ret
BIN2BIN endp


141:デフォルトの名無しさん
09/07/30 19:54:13

pop ax

mov dl,ah ;
mov ah,02h ;
int 21h ;

loop B2H_2

mov dl,'h' ;表示した16進数の最後にhを表示する
mov ah,02h ;
int 21h ;

mov dl,' ' ;区切り用に空白を表示する
mov ah,02h ;
int 21h ;

ret
BIN2HEX endp

Code ends
end Main

142:138
09/07/30 20:00:20
すいません、>>141>>142の順番を間違って貼ってしまいました
正しくは>>138-140→>>142>>141の順です
;キャラクタコードを16進数で表示する変換サブルーチン

BIN2HEX proc near

mov cx,0
mov dl,16 ;基数=16
B2H_1:
mov ah,00h
div dl ;AX÷16=AL…AH
cmp ah,10 ;値は10以上か?
jae B2H_3 ;

add ah,30h ;AH+30h=AH(数字)
jmp B2H_4
B2H_3:
add ah,37h ;AH+37h=AH(英文字)
B2H_4:
push ax
inc cx
cmp al,0
jne B2H_1
B2H_2:

143:デフォルトの名無しさん
09/07/31 11:48:48
x86は門外漢だけど暇だから書いてみた。石の指定が無かったので8086で。
.model small
.8086
assume CS:Code, DS:Data, SS:Stack

Data segment para 'DATA'
TBLHEX db '0123456789ABCDEF' ;16進表現の変換テーブル
STRTOP db ' '
STRBIN db '00000000b ' ;表示用バッファ2進表現部分
STRHEX db '00h', 0Dh, 0Ah, '$' ;表示用バッファ16進表現部分
Data ends

Stack segment stack
dw 100h dup(?)
Stack ends

GetChr macro ;1文字入力
mov ah, 01h
int 21h
endm

PutStr macro string ;文字列表示
mov dx, offset string
mov ah, 09h
int 21h
endm


144:デフォルトの名無しさん
09/07/31 11:49:37
;プログラム
Code segment word 'CODE'
org 100h

;メインプロシージャ
;1文字入力->2進表現への変換->16進表現への変換->表示を改行が入力されるまで繰り返す
Main proc near
mov ax, Data
mov ds, ax
@@:
GetChr
cmp al, 0Dh
je @F
push ax
call CHR2BIN
pop ax
call CHR2HEX
PutStr STRTOP
jmp @B
@@:
mov ax, 4C00h
int 21h
Main endp


145:デフォルトの名無しさん
09/07/31 11:50:09
;文字コード->2進表現に変換しバッファへ格納
CHR2BIN proc near uses bx di
mov cx, 8
xor di, di
mov bx, offset STRBIN
@@:
shl al, 1
mov dl, 00h
adc dl, 30h
mov [bx + di], dl
inc di
loop @B
ret
CHR2BIN endp

N2H macro dst:req;テーブル参照して4bit値の16進表現を取り出しバッファへ格納する
mov si, ax
mov bx, offset TBLHEX
mov al, [bx + si]
mov bx, offset dst
mov [bx + di], al
endm


146:デフォルトの名無しさん
09/07/31 11:51:16
CHR2HEX proc near uses bx si di
xor ah, ah
push ax
xor di, di
;上位4bitを取り出して16進表現に
shr al, 1
shr al, 1
shr al, 1
shr al, 1
N2H STRHEX
;下位4bitをとりだして16進表現に
inc di
pop ax
and ax, 0Fh
N2H STRHEX
ret
CHR2HEX endp

Code ends
end Main

わからないところからの続きじゃなかったりする。ゴメンね。

147:デフォルトの名無しさん
09/07/31 12:29:14
有名な技だけど、ALの下位4ビットを16進に変換する方法

and al,0Fh
cmp al,10
sbb al,69h
das

148:デフォルトの名無しさん
09/07/31 19:04:00
お?楽でいいなぁ、これ。

149:デフォルトの名無しさん
09/08/01 00:02:37
>>146
ありがとうございます。
でもまだアセンブリ習い始めてすぐなのでshrとかがよくわかりません
できれば続きからはできませんか?

150:デフォルトの名無しさん
09/08/01 06:16:38
>>149
sine

151:デフォルトの名無しさん
09/08/01 11:27:45
>>150 おひ(笑
>>149 shr = SHift Right。C言語やPerlの演算子だと >>=。
対象レジスタ(変数)の値を指定ビット数だけ右に移動させる。
あいだ左端には 0(ビット) を置いて行きます。
それからねー、a >> n は int(a/2**n) [** はべき乗] に等価なのだ。


152:デフォルトの名無しさん
09/08/01 13:55:30
>>149
てーかCPUによって使える命令は変わるから先にCPUを明示しろよ。
まぁ習うといってもアセンブリ言語ならではのプログラミングの癖さえ把握すれば、あとはデータシート落として熟読して終わりなんだが。

153:デフォルトの名無しさん
09/08/01 15:13:13
>>151
最後の行、論理シフトだから「等価」と違うと思うよ。

154:デフォルトの名無しさん
09/08/01 17:17:53
>>151
解説ありがとうございます
>>152
CPUはCore2 DuoのE8600を使っています

155:デフォルトの名無しさん
09/08/01 18:30:47
データシートは熟読するものじゃねえと思うデスよ。
あれは辞書と同じで使いつつ覚えるもの。


156:デフォルトの名無しさん
09/08/01 20:23:06
メモリ構造とアルゴリズムを直接リンクできる唯一の言語

157:デフォルトの名無しさん
09/08/01 20:25:59
>>156
言っちゃ悪いが意味不明だ。

158:デフォルトの名無しさん
09/08/01 20:30:46
いくらアセンブリ言語と言えども、それ自身が入出力をすることはできない。
できるのは、OSに指示を出すだけだ。またはハードウェアに。

159:デフォルトの名無しさん
09/08/01 20:33:33
データシート熟読するのは組み込み系のプロセッサだろう。

160:デフォルトの名無しさん
09/08/01 20:41:21
>>158 のほうが意味不明だな

>>156 はスレッデッドコードみたいな技法のことを言いたいんだろうか?

161:デフォルトの名無しさん
09/08/01 20:48:46
なんだそれw
超エスパーだなw

162:デフォルトの名無しさん
09/08/02 13:55:35
アセンブリでOSのAPI使えんの?

163:デフォルトの名無しさん
09/08/02 13:56:41
当然出来る。

164:デフォルトの名無しさん
09/08/02 14:07:04
>>162
int割り込みでコンソールIOってのが一番分りやすい例かも。
アセンブリ言語以外の言語でいうAPIとはかなり毛色が違うが、これもAPIの一種…というかAPIの元ネタだよな。

Windowsとかでも、カーネルモードへの入り口としてSYSENTERって形で残ってる。
ラッピングされてて普通は触らないというか触れないが。

165:デフォルトの名無しさん
09/08/02 14:55:07
今時のOSなら単純にcallすればいい。

166:デフォルトの名無しさん
09/08/02 14:59:09
Linuxだとsyscall番号と引数をレジスタに設定してint 0x80で
システムコールを発行できる。

167:デフォルトの名無しさん
09/08/02 15:04:39
>>166
それって何の意味があるの?
callと比べて

168:デフォルトの名無しさん
09/08/02 15:12:54
callと比べる意味ってどこにあるの?

169:デフォルトの名無しさん
09/08/02 15:18:11
>>167
>それって何の意味があるの?
そうゆう決まりになってるから

170:デフォルトの名無しさん
09/08/02 15:21:02
>>167
callだとlibcをリンクしないといけないだろ。
少しは自分の頭で考えろよ。

171:デフォルトの名無しさん
09/08/02 15:31:21
ああ納得w
linuxのABIは酷いからな
それらに影響されたくなかったわけか

172:デフォルトの名無しさん
09/08/02 17:08:26
スタティックリンク前提の方が醜くね?

173:デフォルトの名無しさん
09/08/02 17:09:50
だからそう言ってるのか。

174:デフォルトの名無しさん
09/08/02 17:49:30
linux板住人も酷すぎる

175:デフォルトの名無しさん
09/08/02 22:17:55
int で呼んでるのは別にLinuxだけじゃないんだが

176:デフォルトの名無しさん
09/08/02 22:26:52
でもlinuxが酷いことに変わりはないよね

177:デフォルトの名無しさん
09/08/02 22:45:13
元々BIOSからしてint呼び出しになってたし
DOSもそうだった。

386BSDは確かコールゲート経由だったが
それ以外は多くがintだな。
今は結構sysenterになってるみたいだが。

例えばNT系のWindowsも、システムコールはint2Eだという話を聞いた覚えがある。
信憑性は知らんが。

その手のシステムコール呼び出しを
POSIXならopen()というAPI、Win32ならCreateFile()というAPIとして公開している、という点では皆同じ。

178:デフォルトの名無しさん
09/08/03 00:31:18
ToolBoxはAライントラップだったっけ。

179:デフォルトの名無しさん
09/08/03 01:47:42
酷いって何が酷いんだ?馬鹿じゃないの?

180:デフォルトの名無しさん
09/08/03 02:04:21
NTのint2Eの呼び出し
URLリンク(www.ctyme.com)

NT/2Kなら、これで直接呼び出すことも出来るはず。
パラメータの説明が無いから殆どは無理だろうけどね。
sysenterに移行したXP以降でもint2Eのインターフェースが残っているかは知らない。

181:デフォルトの名無しさん
09/08/03 02:36:18
XPはsysenterをサポートしてないCPUでも動くっぽいからint 2Eはサポート
してるはず。

LinuxでもCPUに応じてsysenterやsyscallを使える。

182:デフォルトの名無しさん
09/08/05 06:24:33
NOPさん
今日は何をするのかな〜

「ウホホホホウホ」
おやおや
ゴン太くん
今日も張り切ってますね




183:デフォルトの名無しさん
09/08/06 21:12:03
>>166,167,168

これって、カーネル2.25辺りまでしか使えないのでは?
カーネル2.30ではこの仕様ではないですよね?


>Linuxだとsyscall番号と引数をレジスタに設定してint 0x80で
>システムコールを発行できる。

184:デフォルトの名無しさん
09/08/06 22:21:17
いつのまにそんなすごいバージョンのカーネルが出たの?

185:デフォルトの名無しさん
09/08/07 01:34:01
システムコール使えなかったらどうやってカーネルモードとユーザーモードの橋渡しするんだよ…
ロクな事にならねぇぞ

186:デフォルトの名無しさん
09/08/07 01:39:59
その「システムコール」とsyscallは意味がちょっと違う。

187:デフォルトの名無しさん
09/08/07 03:03:32
>>183
アホか?使えるに決まってるだろ。使えないと思う理由は何だ?

188:デフォルトの名無しさん
09/08/22 18:58:58
書いた本人ですら理解しかねるようなアセンブリコードで
オープンソースとか嫌がらせ以外のなにものでもないよ

189:デフォルトの名無しさん
09/08/22 19:39:38
ageるのは馬鹿ばかりだな

190:デフォルトの名無しさん
09/08/22 20:58:04
>>188
おっとGNUやLinuxの悪口はそこまでだ。

191:デフォルトの名無しさん
09/08/23 03:13:42
アセンブラはソースにインデントがないから楽だよなあ。
インデントのある言語は、そこで俺の思考も一緒にインデント
されてしまうから、思考が続かないんだ。

192:デフォルトの名無しさん
09/08/23 05:23:37
大抵は思考を分割しないと内容を把握し辛いからインデントしたり関数分割するのだと思うが、191は分割が苦手な変わりに直線的に広大な範囲を把握できるって事なのか…?
それはそれで凄いのだろうが、書いたソースを読みたくないな。

193:デフォルトの名無しさん
09/08/23 05:37:29
改行のないレスも読みたくないな

194:デフォルトの名無しさん
09/08/23 05:44:09
>>191は配置転換でいきなりPythonを使わされることになったコボラー

195:デフォルトの名無しさん
09/08/23 07:11:47
BASIC−アセンブラとやってきて、現在はコボラーだけどね。
COBOLも、制御構造が導入されてから読みにくくなった。
インデントが多くなったし、外PERFORMでやたらと処理を外出しするので
飛んでから戻ってくるのが大変だ。
やっぱアセンブラだね。
アセンブラが主流の開発現場ってどういうのがあるんだろう。
天職に転職したい、なんちて。

196:デフォルトの名無しさん
09/08/23 07:38:04
アセンブラもインデントする
外出しもする

197:デフォルトの名無しさん
09/08/23 09:27:27
>>195
4bitCPUとかならアセンブラが主流。
つうかそれ以外の選択肢がない。


198:デフォルトの名無しさん
09/08/23 09:41:41
AVRでgccバリバリ使ってますが
最適化-Osは結構アホなのでインラインアセンブラも使います

199:デフォルトの名無しさん
09/08/23 11:01:26
>>195
 外出ししないのはBrainF*ckくらい

200:デフォルトの名無しさん
09/08/23 14:30:22
アセンブラって外出しする構文あったっけ?
BASICで言うGOTOはあるが、GOSUBはないよね?

201:デフォルトの名無しさん
09/08/23 14:43:34
CALLとかBSRとか
命令単体で無くても組み合わせでつくれるだろ

202:デフォルトの名無しさん
09/08/23 14:45:20
>>200
お前アセンブリプログラミングしたことないだろ
GOSUBどころか関数呼び出しが出来るアセンブリ言語なんていくらでもある

203:デフォルトの名無しさん
09/08/23 15:00:26
ホントかよ。
6502と68000をやっていたが、
戻り先を指定しないRETURN的な
構文はなかったような気がするぞ。
今のCPUは違うのか。

世の中の言語が俺に合わせてくれないなら、
自分で作るしかないな。
インデント禁止、分岐はラベル指定ジャンプのみ、
構造化なし、オブジェクト指向なし、ソース分割禁止、
変数はアルファベット一文字のみの俺言語を。
やってみるぜ!

204:デフォルトの名無しさん
09/08/23 15:06:04
どちらもRTSというニーモニックでサブルーチンから戻る命令があるだろ?
おまえは何をやってきたんだ。

205:デフォルトの名無しさん
09/08/23 15:09:17
これだからコボラーは・・・

206:デフォルトの名無しさん
09/08/23 15:15:21
失礼だろうと思って書かなかったが、端にも棒にも掛からないくらいのアホでしたか。
しかもコボラ・・・

>>197
あと、ICカードレベルの極端に制約のある組み込み系と、カスタムLSI/CPUがある系もアセンブリ言語が結構必要な気がするんだが。
前者はメモリ容量と演算速度の制約があるから付加機能を持たせたかったらアセンブリ言語ナシだときつそうだし、後者はカスタムした命令セットの操作に必要になってくるだろう。
・・・インラインで済むかもしれないが。

207:デフォルトの名無しさん
09/08/23 15:27:38
やはりコボラーは馬鹿なんだな
関数呼び出しも知らずに仕事でコーディングしてたと思うとぞっとするわ

208:デフォルトの名無しさん
09/08/23 15:34:24
ハードウェアスタックがないのはIBMメインフレームの特徴だしな。
そっち方面一筋だったとしたらしょうがないかもしれない。
いちじるしく不幸だと思うが。

209:デフォルトの名無しさん
09/08/23 16:39:36
>>203
これ、コボラですらないだろ。
煽りたがりの嘘つき中学生。

210:デフォルトの名無しさん
09/08/23 17:05:40
>>203は煽りか、やっぱり。いい年したオヤジが「俺が」「やってみるぜ!」

…自分の親父と同世代だとすると、吐き気がするw

211:デフォルトの名無しさん
09/08/23 17:45:44
>>204
RTS、調べてみたらあるね。
俺のいた職場では教えてくんなかった。なぜだろう。
まあどのみち使わないからいいんだけど。
では、これから理想の俺言語を作るからさらばだ。
C言語を勉強して、言語仕様を設計して・・・20年はかかるかな。
いいライフワークになりそうだ。

212:デフォルトの名無しさん
09/08/23 18:00:12
> 俺のいた職場では教えてくんなかった。なぜだろう。
> まあどのみち使わないからいいんだけど。

んなわけねーだろ

213:デフォルトの名無しさん
09/08/23 18:56:16
上司部下そろって向上心も技術力も無い職場だった、と。

やはりコボラは害にしかならないのですねー・・・

214:デフォルトの名無しさん
09/08/23 19:49:35
関数ではなくてプロシージャと呼んで欲しい。

215:デフォルトの名無しさん
09/08/24 02:56:49
元々は返却値があるのを関数、無いのは手続き/プロシージャ とか呼んでたよね。
(Fortranの時代) cでvoid型も関数と言うようになってから、関数と手続きの区別が曖昧に
なってきた。オブジェクト指向が登場して手続き型言語が叩かれるようになり、手続きという
単語そのものも嫌われるようになっていった。 くくり出しの概念自体は一緒なのにね。

216:デフォルトの名無しさん
09/08/24 03:14:08
関数のvoidはvoid型を返す関数なんだよヴォケ

217:デフォルトの名無しさん
09/08/24 08:24:26
昔の参考書とか、あと現在でも大学の一般教養レベルだとCのmain関数が

void main(void){
とか
main(){

で始まってたな。これって、86系アセンブラだとah=43h/int 21hのDOSファンクションコールで
alの値を指定しないのと、本質的に同じだよね。これはアセンブラの場合、容量とかの
都合で指定しなかったのか、戻り値をDOSに返すのはどうでもよかったのか?
いまでもアセンブラ解説サイトの大御所でたまに散見される。

218:デフォルトの名無しさん
09/08/24 08:34:49
今時プロシージャとか使いたがる奴は確実にオッサン

219:デフォルトの名無しさん
09/08/24 10:24:48
DOSへ返す戻り値は重要じゃないな。バッチファイルでエラーコード見て分岐とか
ほぼ使わないし。連続して処理を繰り返すなら復旧可能なエラーでプログラム終了
させてDOSへ戻るなんて馬鹿馬鹿しい。続行不可能なエラーならエラーコード吐いた
ってOSが後始末してくれるわけじゃないし。自前で後始末しなけりゃいけないなら、
エラー処理もプログラム内でやって、続行不可能になったらエラーメッセージ吐いて
abortした方がいい。

というか、正常終了で0を返さないと誤動作する糞OSってあんの?

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

5346日前に更新/64 KB
担当:undef