アセンブリ言語最強伝説
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2008/01/10(木) 17:03:37よって機械語と1対1に対応しているアセンブリ言語はどんなものでも書けることになる。
ゆえにアセンブリにできないことはない。
0002デフォルトの名無しさん
2008/01/10(木) 17:27:510003デフォルトの名無しさん
2008/01/10(木) 18:22:580004デフォルトの名無しさん
2008/01/10(木) 18:26:190005デフォルトの名無しさん
2008/01/10(木) 18:42:260006デフォルトの名無しさん
2008/01/10(木) 18:59:170007デフォルトの名無しさん
2008/01/10(木) 19:07:51JITのようにCPUに合わせた最適化が出来ない
0008デフォルトの名無しさん
2008/01/10(木) 19:12:36√ ̄ヽ--ヘ
/ ☆ ヽ
0く━=ニニ二>
//(●) (●) \
/ ヘ (__人__) | ■■ 自宅警備員へお知らせ! ■■
/ヽノ彡,,.. .|∪| /
/ 丿,, /\ヽノ/ゝ 丶 2008年1月11日午前6時(日本時間)より
(  ̄jヽ,/_l ヽ 「2ちゃんねる」が12時間にわたって停止
\ ____ ̄{。 _____ } します。自宅警備を強化し待機せよ。
ヽ、,,_, {---} }。 {---} j http://www.maido3.com/server/
0009デフォルトの名無しさん
2008/01/10(木) 20:54:420010デフォルトの名無しさん
2008/01/10(木) 21:05:400011デフォルトの名無しさん
2008/01/10(木) 22:51:27「俺はwikiができる前からwikiと同じものを作って使ってたんだぜ」
って言ったんだよ。
そしたらなぜか、wikipediaを作ったのか、すげーな、って言われちまったよ。
で、wikiについて説明してもwikipediaと同じだと思い込んでるらしく、
一般人ってなんで物知らずなんだろう、
と思ってしまった俺のほうがやっぱりおかしいんだろうか?
0012デフォルトの名無しさん
2008/01/10(木) 23:02:41俺の脳の方が凄いと思うよ
よって、アセンブリ最強
0013デフォルトの名無しさん
2008/01/10(木) 23:08:44馬鹿?
機械的な最適化が貧弱だからアセンブラで書くんだろうが。
0014デフォルトの名無しさん
2008/01/10(木) 23:09:21CPUで腕立て伏せしてみろよ
0015デフォルトの名無しさん
2008/01/11(金) 10:08:230016デフォルトの名無しさん
2008/01/11(金) 10:30:130017デフォルトの名無しさん
2008/01/11(金) 10:48:30アセンブリ言語が死んで終わるって話だな。
0018デフォルトの名無しさん
2008/01/11(金) 17:58:32で?
コードためしにアップしてよ
0019デフォルトの名無しさん
2008/01/11(金) 18:25:50mov ah,3
0020デフォルトの名無しさん
2008/01/11(金) 18:37:04>>!
0021デフォルトの名無しさん
2008/01/22(火) 09:46:420022デフォルトの名無しさん
2008/02/22(金) 10:10:550023デフォルトの名無しさん
2008/02/22(金) 10:39:04自己最適化させればいいだけだろ
0024デフォルトの名無しさん
2008/05/03(土) 21:45:490025デフォルトの名無しさん
2008/05/06(火) 13:18:260026デフォルトの名無しさん
2008/05/06(火) 13:43:310027デフォルトの名無しさん
2008/05/06(火) 14:34:400028デフォルトの名無しさん
2008/05/06(火) 14:47:530029デフォルトの名無しさん
2008/05/06(火) 21:55:580030デフォルトの名無しさん
2008/05/07(水) 09:18:320031デフォルトの名無しさん
2008/05/07(水) 10:22:480032デフォルトの名無しさん
2008/05/07(水) 10:29:18どうやったら作れますか?
0033デフォルトの名無しさん
2008/05/07(水) 10:38:51適当なワンボードマイコンの開発環境一式を入手して、只管マニュアルを読む。
それに関わる情報をWebなりなんなりで入手する。
入手した情報を元に試行錯誤を繰り返す。
諦めて既存(あるいはサンプル)のOSのソースを読む。
利用できるところは利用して更に試行錯誤する。
挫けて開発環境一式を仕舞い込んでなかったことにする。
0034デフォルトの名無しさん
2008/05/07(水) 12:45:47最後まで書ききれる根性があればの話だがな。
0035デフォルトの名無しさん
2008/05/07(水) 13:30:57割と最近に30日でOS作るとかいう本が出てたから、ネットや書店で買ってそれをやってみればいいよ
雰囲気とかつかめると思う
実用のOSとは程遠いだろうけど
ひげぽんという人は2chで質問しながらモナOS作ったぞ
0036デフォルトの名無しさん
2008/05/07(水) 14:36:240037デフォルトの名無しさん
2008/05/07(水) 21:46:45どうせbootローダかFATあたりで飽きるだろ
0038デフォルトの名無しさん
2008/05/08(木) 23:20:180039デフォルトの名無しさん
2008/05/12(月) 19:09:180040デフォルトの名無しさん
2008/05/12(月) 22:09:52ロードする。
0041デフォルトの名無しさん
2008/06/05(木) 10:58:55押す、引っ張る
裏返す、交換する
増やす、減らす
足す、引く
ずらす、回す
削る、重ねる
比べる
飛ぶ、繰り返す
呼ぶ、戻る
なんだ覚えることはこれだけか
0042デフォルトの名無しさん
2008/06/05(木) 12:11:310043デフォルトの名無しさん
2008/06/05(木) 15:18:39> ポインタをインクリメントする
< ポインタをデクリメントする
+ ポインタが指す値をインクリメントする
- ポインタが指す値をデクリメントする
. ポインタが指す値を出力する
, 1バイトを入力してポインタが指す値に代入する
[ ポインタが指す値が0なら、対応する ] までジャンプする
] ポインタが指す値が0でないなら、対応する [ にジャンプする
0044デフォルトの名無しさん
2008/06/05(木) 15:24:07Hコマンドは文字列"Hello, world!"を出力する。
Qコマンドはプログラムのソースコードを出力する(参考:自己出力プログラム)。
9コマンドは『99 Bottles of Beer』(アメリカの数え歌で、プログラミングの例題でよく利用される)の歌詞を出力する。
+コマンドはアキュムレータをインクリメント(1だけ増やす)する。
0045デフォルトの名無しさん
2008/06/29(日) 21:37:35LD GR0,=0
LD GR1,=0
LOOP1 CPA GR1,NUM
JZE FIN
ADDA GR1,=1
LD GR2,GR1
LD GR3,=0
LOOP2 ADDA GR3,GR1
SUBA GR2,=1
JNZ LOOP2
ADDA GR0,GR3
JUMP LOOP1
FIN ST GR0,TOTAL
RET
NUM DC n
TOTAL DS 1
END
の結果はどうなりますか??
0046デフォルトの名無しさん
2008/06/29(日) 21:45:58LD GR0,=0
LD GR1,=0
LOOP1 CPA GR1,NUM
JZE FIN
ADDA GR1,=1
LD GR2,GR1
LD GR3,=0
LOOP2 ADDA GR3,GR1
SUBA GR2,=1
JNZ LOOP2
ADDA GR0,GR3
JUMP LOOP1
FIN ST GR0,TOTAL
RET
NUM DC n
TOTAL DS 1
END
の結果はどうなりますか??
0047デフォルトの名無しさん
2008/06/29(日) 23:21:05アーキテクチャは x86 や x86_64 でいいんだけど…
0048デフォルトの名無しさん
2008/06/30(月) 07:41:230049デフォルトの名無しさん
2008/06/30(月) 22:18:05EX4C START
;
;
;
FIN ST GR1,MAX ;最大値をメモリに格納
RET
NUM DC 10 ;データの個数
DATA DC 60,80,70,50,90
DC 40,50,80,100,90
MAX DS 1 ;最大値格納用領域
END
005047
2008/07/01(火) 01:33:53何の資料を漁ればいいんだろうか?
.LFE14:
.size main, .-main
.section .eh_frame,"a",@progbits
.Lframe1:
.long .LECIE1-.LSCIE1
.LSCIE1:
.long 0x0
.byte 0x1
.string "zR"
.uleb128 0x1
.sleb128 -8
.byte 0x10
.uleb128 0x1
.byte 0x3
.byte 0xc
.uleb128 0x7
.uleb128 0x8
.byte 0x90
.uleb128 0x1
.align 8
.LECIE1:
.LSFDE1:
.long .LEFDE1-.LASFDE1
.LASFDE1:
.long .LASFDE1-.Lframe1
.long .LFB13
.long .LFE13-.LFB13
.uleb128 0x0
0051デフォルトの名無しさん
2008/07/01(火) 23:39:21gccとgas
0052デフォルトの名無しさん
2008/07/02(水) 00:26:16いあそうなんだけど
info gas とか info gcc とか見れば分かるの?
0053デフォルトの名無しさん
2008/07/02(水) 13:01:100054デフォルトの名無しさん
2008/07/02(水) 13:04:380055デフォルトの名無しさん
2008/11/21(金) 21:10:04WCASL�Uについての問題です。
アドレスx,x+1,x+2の内容をそれぞれアドレスy,y+1,y+2に格納するプログラムを完成せよ。
が分からないので教えてください。
習ったコマンドはLD,LAD,ST,DC,DSくらいです。
自分の考えで作ったのは
アドレスx,x+1,x+2の内容をそれぞれGR0,GR1,GR2に格納したものです。
これを使って作れないですかね・・・
よろしくお願いします。
START
LAD GR7,0
LD GR0,X,GR7
LAD GR7,1,GR7
LD GR1,X,GR7
LAD GR7,1,GR7
LD GR2,X,GR7
RET
X DC 10,20,30
END
0056デフォルトの名無しさん
2008/11/21(金) 22:12:32自己解決しました。
0057デフォルトの名無しさん
2009/03/07(土) 01:59:26みたいな問題を先輩に出されたんだが、2つしかわからん。
add eax,1
inc eax
の他に何があるだろう?
0058デフォルトの名無しさん
2009/03/07(土) 02:10:434. -1をsub
かなあ。
0059デフォルトの名無しさん
2009/03/07(土) 02:12:15lea eax,[eax+1]
sub eax,-1
か。
thx
0060デフォルトの名無しさん
2009/03/26(木) 07:27:47アセンブラで出来てるんだから、
どんな複雑なAPIも結局はその組み合わせでしかないと思って
アセンブラの勉強を始めたら、
ノイマンモデルからやり直しになっちゃった('A`)
でもこういうのは楽しいね。
0061デフォルトの名無しさん
2009/04/09(木) 22:28:110062デフォルトの名無しさん
2009/06/15(月) 02:31:540063デフォルトの名無しさん
2009/06/15(月) 23:18:480064デフォルトの名無しさん
2009/06/16(火) 02:00:28http://pc12.2ch.net/test/read.cgi/tech/1172916032/
0065デフォルトの名無しさん
2009/06/16(火) 11:45:550066デフォルトの名無しさん
2009/06/16(火) 12:13:18Part13 が即死して放置されてる。
Part13.1 で立て直す?
0067デフォルトの名無しさん
2009/06/16(火) 13:36:200068デフォルトの名無しさん
2009/06/17(水) 01:38:00せめてプログラム板では
アセンブラではなく
正しいアセンブリ表記にしようぜ
0069デフォルトの名無しさん
2009/06/18(木) 08:47:45アセンブリ言語の処理系がアセンブラだろ?
0070デフォルトの名無しさん
2009/06/18(木) 08:52:26assembly languageと書かれることが多いし、一般的にその方が正しいと思う人が
多いと思うが、IBMの社員はassembler languageって言うんだよな。
0071デフォルトの名無しさん
2009/06/18(木) 09:07:450072デフォルトの名無しさん
2009/06/18(木) 15:26:110073デフォルトの名無しさん
2009/06/18(木) 18:51:03それが常識だよな
っていうか英語がわかればそのまんまだし
>>70
さすがIBM社員
プログラム知識はまるで駄目だな
0074デフォルトの名無しさん
2009/06/18(木) 19:17:46方言ってだけでプログラミングと関係はないだろう。
0075デフォルトの名無しさん
2009/06/18(木) 19:58:270076大和魂 ◆TLCPn.jaa2
2009/06/19(金) 18:00:185日以上PC-9801の前に張り付いて、アタマがおかしくなってきました。
2レスに分けますが、識者の方、よろしくお願いします。マジで台湾料理屋で腹壊しましたOrz
【行ないたいこと】
PC-9801のサウンドBIOSを任意のRAM領域にコピーしたい。PC-9801(26K互換FM)サウンドBIOSの
アドレス等は一意であり、セグメント:オフセットアドレス表記で、 0cc00h:2e00h の場所から
16kbの領域を占有する。2e00hから最初の3ワードは、0001h、0000h0、00d2hとなっており、これの
検出の可否でサウンドROMの存在を確認できる。
【やってみたこと】
PC-9801RS21(80386SX 16MHz 6.6MB RAM)上のNASM 2.06rc10にて、以下のような方針で
アッセンブルしてみた。転送先の初期化済みバッファ(00h x 8バイト)をsbuffとして確保し、
rep movsb命令でサウンドROM BIOSの最初の6バイトを転送してみた。その後DOSへの復帰前に
word [es:0cc00:2e00h+4]と00d2hが一致することまでは確認済み。ただ、word [es:sbuff+4]と
00d2hがcmpで一致しないんです。ここが問題。
【特記事項】
DOS 6.2のEMM386.EXEによりEMSメモリのページフレームがC0000hから確保されるので、
現状では実行および検証はリアルモードで何も組み込まない状態(F5起動)で行なう必要がある。
EMS対応は将来の課題である。なお、上記PC-9801RS21に標準ではFM音源は存在しないが、
互換ボードにて検証している(FM音源として、正常に機能し、拙作ツール・ゲーム等にて音も鳴る)。
0077大和魂 ◆TLCPn.jaa2
2009/06/19(金) 18:03:20; PC-9801 26K compatible Sound BIOS copy tiny program
; Programmed by Yamato_Damashii 2009-06-19 for NASM 2.06rc10
[Bits 16]
org 100h ; COM program
start:
push es
push ds
mov ax, 0cc00h ; Start of Segment Address of Sound BIOS
mov es, ax
push es
pop ds
mov bx, 2e00h ; Start of Offset Address of Sound BIOS
lea si, [es:bx]
lea di, [sbuff]
mov cx, 8
rep movsb ; 一応movsbに(rep movsw 4を使いたいが安全のため)
CompareWithOriginal:
cmp word [es:bx+4], 00d2h
jne FailedCpyRom ; これは通過する。当たり前か。
cmp word [es:sbuff+4], 00d2h
jne FailedCpyRom ;
;ここで失敗。根本的に勘違いしているのだろうか…。上の[es:sbuff+4]と00d2hの
比較を取っ払えば、「成功しました」と判断される。ちなみに、EMS配下で実行すると暴走する
;以下、成功・失敗のメッセージ表示、POP DS/POP ES/終了処理など。
section .data
...
times 8 db 0
0078PENELOPE
2009/06/19(金) 18:07:54何からはじめたら良いですか?
0079デフォルトの名無しさん
2009/06/19(金) 18:10:030080PENELOPE
2009/06/19(金) 18:11:240081デフォルトの名無しさん
2009/06/19(金) 18:15:03最初はシンプルなCOMファイルでの勉強がおすすめ
しかし、環境構築が大変かもしれn
0082大和魂 ◆TLCPn.jaa2
2009/06/19(金) 18:38:25すいません、
section .data
sbuff:
times 8 db 0
の間違い。
で、ちょうどCで
char sbuff[8];
としたみたいなものです。確保したsbuffが実際にメモリ上のどこにあるかは判らないです。
判らないのは、Cでも同じでしょう。MASMだと dup/db系の擬似命令で行なうのだと思いますが。
0083デフォルトの名無しさん
2009/06/19(金) 18:41:080084大和魂 ◆TLCPn.jaa2
2009/06/19(金) 19:17:57なるほど。やってみます。あと、TASM(BCC 日本語版 v3.1付属)でも
同様のコードを書いてみようと思います。アドバイスありがとうございました。
Tracing the value of the segment registers, right? Thx !!
0085デフォルトの名無しさん
2009/06/20(土) 08:37:40Cを20年勉強しても使えるようになれなかったけど
アセンブラは一週間もかからず使えるようになった。
0086デフォルトの名無しさん
2009/06/20(土) 09:18:050087デフォルトの名無しさん
2009/06/20(土) 10:41:020088デフォルトの名無しさん
2009/06/20(土) 10:50:24本当だったら感心するわ
0089デフォルトの名無しさん
2009/06/20(土) 10:53:450090デフォルトの名無しさん
2009/06/22(月) 12:32:34IA32でのJcc系列に対する2Eまたは3Eのプリフィクス・コードってどんな意味があるの?
実際に動かしてみても動作には影響しないよね?
デベロッパ・マニュアルに書いてあったを見てから気になってしまって
0091デフォルトの名無しさん
2009/06/22(月) 12:45:43分岐予測のヒント
0092デフォルトの名無しさん
2009/06/22(月) 15:05:19難しい。
0093デフォルトの名無しさん
2009/06/22(月) 16:36:55(i286まではセグメントオーバーライドプレフィックスつってた奴)
0094デフォルトの名無しさん
2009/06/23(火) 04:57:40今もsegment override prefixと言ってるような気がするが。
で本題だが、そのprefix byteは普段はそういう意味なんだが、
分岐命令の前にくるとヒント情報として解釈されるという…
泥沼泥沼
0095デフォルトの名無しさん
2009/06/23(火) 09:14:292E+Jccの時は条件が成立しない確率が高い事をCPUに知らせるためのヒント
3E+Jccの時は条件が成立する確率が高い事をCPUに知らせるためのヒント
他の分岐命令との組み合わせは予約済みとIntel 64 and IA-32 Architectures Software Developer's Manual Volume 2A: Instruction Set Reference, A-Mにちゃんと書いてある
どのCPUから有効かなどの情報はないが
0096デフォルトの名無しさん
2009/06/26(金) 17:10:04windowsのdebugコマンドでは
mov eax,1みたいなのが使えないので
これは16ビットのアセンブラってことですよね
0097デフォルトの名無しさん
2009/06/26(金) 21:43:44DEBUG.EXEは元々DOS用のデバッガだから対応してないだけ
0098大和魂 ◆TLCPn.jaa2
2009/06/27(土) 04:54:42ところで、入門書・入門サイトの類いの冒頭にかならずと云っていいほど
載っている"Hello, World!"のDOS画面表示プログラムですが、
大半の入門書、また実際のコードを見ても、流れは
・dxレジスタにメッセージ文のあるオフセットアドレスを代入
・AH=09H / INT 21Hのfunction callにより、コンソールに表示
となっていますが、ほとんどのケースで
mov dx, offset err_msg ; [MASM表記]
mov dx, err_msg ; [NASM表記]
ですね。先日PC-98の小物ツールのソースを読んでいたら、dxレジスタへのアドレス代入に
lea dx, [err_msg] ; [NASM表記]
となっているものがありました。実際にアッセンブルすると1バイト余分に食ってしまい、
たとえばAH=09Hファンクションが4箇所あれば、4バイト分実行バイナリ(COMファイル)が
大きくなってしまっています。この場合、mov dx, offset ではなく、lea命令で代入するのは、
擬似命令のoffsetを使いたくない、という理由ではないですよね??ご教示ください。
あとエラーメッセージやUsageの表示に、AH=40H/BX=0001Hのfunction callを用いる利点と欠点を
ご教示ください。数バイト分バイナリが大きくなってしまうのですが、意味が無いでしょうか??
0099大和魂 ◆TLCPn.jaa2
2009/06/27(土) 04:59:41AH=40H / BX=0001H でのコンソール出力は、ファイルハンドラを用いて
書き出していたり、戻り値の判定等で、AH=09Hのそれとは厳密さの点で異なるという
理解で大丈夫でしょうか?
0100デフォルトの名無しさん
2009/06/27(土) 10:40:47leaのほうが[bx+si+10]とかそういう指定もできるので応用がある。
ファンクションコールはMS-DOSの話になるが、「厳密さの点で異なる」という
言葉の意味がよくわからない。
0101デフォルトの名無しさん
2009/06/27(土) 11:00:14エラーメッセージに、AH=09H / INT 21H
を使わないのは、エラー系は標準出力以外を使う文化が
あるからじゃないかな。
0102デフォルトの名無しさん
2009/06/27(土) 11:01:5509Hは標準出力に送信する、終端は'$'。
40Hは出力先をファイルハンドルで指定する、出力するデータのサイズも指定する。
両者は別物。
0103大和魂 ◆TLCPn.jaa2
2009/06/27(土) 11:02:51回答ありがとうございます。
leaを使うか、mov offsetの組み合わせでアドレス代入するかは、趣味程度の違いなんですね。
そうか、leaだと、確かにご指摘のようなパターンの応用も利きますね。
ところで後段、
mov ah, 9
lea dx, [err_msg]
int 21h
とすると、リターンコードがありません。しかし、
mov ah, 40h
mov bx, 0001h
mov cx, err_msglen
mov dx, err_msg
int 21h
section .data
err_msg: db 'An error has occured.', 0dh, 0ah, '$'
err_msglen equ $ - err_msg
としますと、実行後axレジスタに戻り値が格納され、各種判定に用いることが出来るということで、
「厳密」という表現を用いました。例えが不適切かも知れませんが、Cで云うところの
puts("An error has occured."); と、書式付き出力命令である
fprintf(stderr, "An error has occured.\n"); と対比可能ではないかな、と思いまして。
# int 20hでプログラム終了という太古のソースは、さしずめ void main(void){}で、DOSへの
# 戻り値のない、現在で云うANSI C非準拠のコードと同じでしょうかね。
# 80年代後半くらいから、ほとんどは mov ax, 4c00h / int 21hですよね。
0104デフォルトの名無しさん
2009/06/27(土) 11:04:27Usageやエラーは標準エラー出力に出さないと、出力をリダイレクトした時に困るから。
0107デフォルトの名無しさん
2009/07/09(木) 22:37:35sub $2,$1,$1
lw $4,100(0)
L1: add $2,$4,$2
addi $4,$4,-1
beq $4,$0,L1
sw $2,104($0)
End:
このプログラムをN番地から実行を開始した時、実行される命令の番地、それにより変化する汎用レジスタの名称、
変化後の値を知りたいのですが、途中までしかわかりません。
実行開始時、100番地から始まる4バイトには、整数10が格納されているとします。
順番 実行される命令の番地 変化する汎用レジスタ等の名称 変化後の値 の順に…
1 N $2 0
2 N+4 $4 10
3 N+8 $2 10
4 N+12 $4 9
5 N+16
6 N+8
7 N+12
8 N+16
0108デフォルトの名無しさん
2009/07/09(木) 22:38:150109デフォルトの名無しさん
2009/07/09(木) 22:49:590110デフォルトの名無しさん
2009/07/09(木) 23:05:08sub $2,$1,$1
lw $4,100($0)
L1: add $2,$4,$2
addi $4,$4,-1
beq $4,$0,L1
sw $2,104($0)
End:
0111デフォルトの名無しさん
2009/07/09(木) 23:07:012 N+4 $4 10
3 N+8 $2 10
4 N+12 $4 9
5 N+16
6 N+8 $2 20
7 N+12 $4 8
8 N+16
0112デフォルトの名無しさん
2009/07/09(木) 23:26:58ループしないな。
どっか違わない?
0113デフォルトの名無しさん
2009/07/09(木) 23:27:22C/C++はあるのになんでアセンブリは宿題スレないんだろうな
最近習いだしたが先生に聞いてさっぱりも分からないのに課題出されて泣きそうだよ
0114デフォルトの名無しさん
2009/07/09(木) 23:34:52理解できるまで、何回も考えてから、
解き方を質問すればいいだけ。
答えだけ知りたいなら、
誰かあらわれるまでまってりゃいい。
0115デフォルトの名無しさん
2009/07/09(木) 23:37:32違わなくて、ループしないから困っているのです…。
理解できるまで、何回も考えてから、解き方を質問してます。
だれか、頭のいい方…
0116デフォルトの名無しさん
2009/07/09(木) 23:37:36それMIPSのコードだろ?SPIM使って実行すればすぐ分かるだろうが
0118デフォルトの名無しさん
2009/07/09(木) 23:42:070119デフォルトの名無しさん
2009/07/09(木) 23:44:530120デフォルトの名無しさん
2009/07/09(木) 23:48:28意味が通る。それだけは最低教授に確認しろ。
ちなみにSPIMはMIPS32シミュレーターの名前だ。
0121120
2009/07/09(木) 23:50:450122デフォルトの名無しさん
2009/07/09(木) 23:59:20bneが≠だとすると値はそれぞれどんどん離れていき・・
$2 $4
0 10
10 10
10 9
19 8
27 7
でも符号が反転してどこかで終わるかな?
0124デフォルトの名無しさん
2009/07/10(金) 00:05:42あああ気付いて書き込もうと思ったら間に合わなかったあああ
ありがとうございます。
最近彼氏と別れたからあなたに惚れそうです。
0126デフォルトの名無しさん
2009/07/10(金) 00:10:04さすが、彼女がいる男って優しいんだよな;;
大学は明治でした。ほんとサーセンww
0127デフォルトの名無しさん
2009/07/10(金) 00:23:14だから124は俺がもらっていきますね
0128デフォルトの名無しさん
2009/07/10(金) 04:49:07アッーみたいな。
0129デフォルトの名無しさん
2009/07/11(土) 08:57:54やはり120はガチホモか。
>>120
やらないか?
0130デフォルトの名無しさん
2009/07/30(木) 08:55:56忘れてしまった。どうやるかわかる人いる?
0131デフォルトの名無しさん
2009/07/30(木) 09:30:30a - z = 0110 0001 - 0111 1010
C = c xor 0010 0000
0132デフォルトの名無しさん
2009/07/30(木) 11:55:250133デフォルトの名無しさん
2009/07/30(木) 12:07:33大文字と小文字を入れ替えるだけじゃない?
0134デフォルトの名無しさん
2009/07/30(木) 17:48:490x41-0x5A + 0x61-0x7A を 0x00-0x33 にするっていうこと?
0135デフォルトの名無しさん
2009/07/30(木) 17:58:56これのことでしょ?
ここではShiftJISの判定だけど
0136デフォルトの名無しさん
2009/07/30(木) 18:08:200137デフォルトの名無しさん
2009/07/30(木) 18:59:47>>135これです。ありがとう。
0138デフォルトの名無しさん
2009/07/30(木) 19:50:51ご教授お願いします
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:
0139138
2009/07/30(木) 19:52:31int 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
0140デフォルトの名無しさん
2009/07/30(木) 19:53:12BIN2BIN 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
0141デフォルトの名無しさん
2009/07/30(木) 19:54:13pop 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
0142138
2009/07/30(木) 20:00:20正しくは>>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:
0143デフォルトの名無しさん
2009/07/31(金) 11:48:48.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
0144デフォルトの名無しさん
2009/07/31(金) 11:49:37Code 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
0145デフォルトの名無しさん
2009/07/31(金) 11:50:09CHR2BIN 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
0146デフォルトの名無しさん
2009/07/31(金) 11:51:16xor 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
わからないところからの続きじゃなかったりする。ゴメンね。
0147デフォルトの名無しさん
2009/07/31(金) 12:29:14and al,0Fh
cmp al,10
sbb al,69h
das
0148デフォルトの名無しさん
2009/07/31(金) 19:04:000149デフォルトの名無しさん
2009/08/01(土) 00:02:37ありがとうございます。
でもまだアセンブリ習い始めてすぐなのでshrとかがよくわかりません
できれば続きからはできませんか?
0150デフォルトの名無しさん
2009/08/01(土) 06:16:38sine
0151デフォルトの名無しさん
2009/08/01(土) 11:27:45>>149 shr = SHift Right。C言語やPerlの演算子だと >>=。
対象レジスタ(変数)の値を指定ビット数だけ右に移動させる。
あいだ左端には 0(ビット) を置いて行きます。
それからねー、a >> n は int(a/2**n) [** はべき乗] に等価なのだ。
0152デフォルトの名無しさん
2009/08/01(土) 13:55:30てーかCPUによって使える命令は変わるから先にCPUを明示しろよ。
まぁ習うといってもアセンブリ言語ならではのプログラミングの癖さえ把握すれば、あとはデータシート落として熟読して終わりなんだが。
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:
0253デフォルトの名無しさん
2009/09/24(木) 06:28:22つまらん壁はなくなるが、色々監視されて鬱陶しいことになったりするぞ。
0254デフォルトの名無しさん
2009/09/24(木) 10:03:18そのままリアルモードに戻ったところが本当の天国
0255デフォルトの名無しさん
2009/09/24(木) 18:05:13マルチタスクの方が圧倒的に便利でしょ
0256デフォルトの名無しさん
2009/09/24(木) 20:01:510257デフォルトの名無しさん
2009/09/25(金) 09:48:27なるほど、そーゆー恥ずかしい勘違いをしてる人だったのか。
0258デフォルトの名無しさん
2009/09/25(金) 11:37:57あと、保護のある環境を天国と見るか、ない環境を天国と見るかは
意見の分かれるところだ。
0259デフォルトの名無しさん
2009/11/23(月) 13:16:470260デフォルトの名無しさん
2009/11/23(月) 13:28:23保護で落とされるのは、あらぬアドレスにアクセスしたとか、おかしな動作
だから、普通のコードを書くぶんにはたいして変わらないよ。
0261デフォルトの名無しさん
2009/11/26(木) 23:51:510262デフォルトの名無しさん
2009/11/26(木) 23:57:200263デフォルトの名無しさん
2009/11/26(木) 23:57:490264デフォルトの名無しさん
2009/11/27(金) 05:38:08無理だったのであきらめた・・・
call ?function@namespace@@YAHXZ:PROC
0265デフォルトの名無しさん
2009/11/27(金) 17:04:260266デフォルトの名無しさん
2009/11/27(金) 20:06:27次に、ちゃんとlibを指定しているか、ということ
後者は、コンパイラに#pragma comment(lib,..)を出力させて、
アセンブラディレクティブでどうなっているか確認することで
アセンブラコードの内部で対応できるかもしれない。
0267デフォルトの名無しさん
2010/01/02(土) 04:51:36たしか「?」とかはそうしないと無理だった気がする。
0268デフォルトの名無しさん
2010/01/15(金) 01:30:45勿論 gas も入ってるけど、何か新鮮。
0269デフォルトの名無しさん
2010/01/15(金) 04:09:440270デフォルトの名無しさん
2010/01/15(金) 08:14:340271デフォルトの名無しさん
2010/02/20(土) 06:03:090272デフォルトの名無しさん
2010/03/07(日) 00:34:54学習用途ではどれがオススメですか?
ちなみにターゲットはx86オンリーでdos、win、linuxあたりです。
0273デフォルトの名無しさん
2010/03/07(日) 02:11:410274デフォルトの名無しさん
2010/03/07(日) 02:14:47学習用途ならCASLに決まってんだろ!
0275デフォルトの名無しさん
2010/03/07(日) 17:44:10学習用途な時点で癖のあるgasは消えるな
x86オンリーならx64なnasmは消えるな
すると残るのは・・・やはりCASLしか無いね
0276デフォルトの名無しさん
2010/03/07(日) 18:43:010277デフォルトの名無しさん
2010/03/08(月) 05:38:160278デフォルトの名無しさん
2010/03/08(月) 09:26:49正道に勝るもの無し。
MS純正のMASMとIntelが配布してるデベロッパーズマニュアルの組み合わせが一番良い。
どうしてもgasを使うなら.intel_syntaxディレクティブを「必ず」指定する事。
どうせならdosとlinuxを捨てなさい。現実的な選択肢とは言えないから。
0279デフォルトの名無しさん
2010/03/08(月) 10:22:30x86ならオペコード表とModRMの使い方マスターするだけでかなり読み書きできるようになるから
アセンブラの構文がどうとかみたいなどうでもいいことが気にならなくなる
0280デフォルトの名無しさん
2010/03/08(月) 14:03:25>>279は今更何言ってんだ?
0281デフォルトの名無しさん
2010/03/08(月) 14:06:18それ系スレを適当に潰してる状況だというのに何を言うか。
0282デフォルトの名無しさん
2010/03/08(月) 16:21:33/ \ /\ < なんだろう。 >
| (゚)=(゚) | < >
| ●_● | < >
/ ヽ < >
| 〃 ------ ヾ | < >
\__二__ノ YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY
0283デフォルトの名無しさん
2010/03/09(火) 21:05:25自分はそれに気付くまで大分遠回りしたわ…
先にマシン語をちょっと齧っておくと大分理解が速いよね。
>>275
NASM が x64 ってどういう事?
x86 でも使えるでしょ。
0284デフォルトの名無しさん
2010/03/09(火) 21:56:21これで安心して死ねる
0285デフォルトの名無しさん
2010/03/11(木) 00:11:53一つに絞らず、それぞれのプラットフォームで一番使われてる物を選んだ方が良いよ。
その意味で、Windows でやる時は masm を、Linux の時は gas を使うと良いと思う。
勉強がある程度進めばシンタックスの差は誤差である事に気付くと思うけど、どうしても
気持ち悪いと思ったら、その時に nasm を選択すると良いと思う。
0286デフォルトの名無しさん
2010/03/11(木) 05:37:140287デフォルトの名無しさん
2010/03/11(木) 13:45:550288デフォルトの名無しさん
2010/05/25(火) 17:51:31ここで聞いちゃっていいですか?
C と一部アセンブリ (x86) で書かれたプログラムを gdb でデバッグしているのですが、
アセンブリ区間に入るとバックトレースが正しく表示されないことがよくあります。
おそらく、関数呼び出し (call やスタック操作の伴う jmp) でなく単純にラベルに jmp
したりしている部分があるからだと思われます。
結果、プログラムの流れが追いづらいです。例えばアセンブリのどこかでコケてて
gdb がそこで停止しても、どこから来たかがよくわかりません。
こういうのってうまいデバッグの仕方はあるんでしょうか。
0289デフォルトの名無しさん
2010/05/25(火) 19:28:410290デフォルトの名無しさん
2010/05/25(火) 19:57:17lst と map みりゃわかるだろう。
0291デフォルトの名無しさん
2010/05/25(火) 20:11:24アセンブラ部でダミースタックフレーム作ってみたら?
どうせ %ebp とか別用途で使っちゃってると思うけど。
0292デフォルトの名無しさん
2010/05/26(水) 12:35:17アセンブルする時に -g (だっけ? デバッグ情報を出力する奴)を忘れてるんじゃないの?
あとはリリースビルドだから分かりにくいとか。
そして最終的には >>290。
0293288
2010/05/28(金) 18:26:27>>289
他人が書いたのを修正しつつメンテしています。
>>290
えっと、アドレスとの対応関係がわからないというのではなく、プログラムの
「流れ」が分かりにくいと書いているのですが....
C で goto 使いまくりのコードだとデバッガで流れを把握しにくいですが、たぶん
自分の質問はそれと類似なのかなと....
あと、C の中からアセンブラのルーチンを呼び出すようなコードで、 gdb で
アセンブラ部分をステップ実行していると、ラベルを通過したときに一番トップの
フレームがそのラベル部分であるかのような表示になりますけど(よね?)、実際
にはそこでフレーム操作がなされているわけではないので、それを期にそれ以前
のフレームの表示がおかしくなる? ような気がしているのですがどうでしょう。
でそういう意味で >>291 さんのヒントなどは参考になるかと思ったのですが、
いまさら一個一個スタックフレームを作るように書き直すのはしんどいw しそれに
その分効率も落ちるのかも(デバッグ終わったら消す? gcc の -fomit-frame-pointer?)
0294デフォルトの名無しさん
2010/05/29(土) 12:15:110295デフォルトの名無しさん
2010/06/02(水) 20:38:13それは本当に日本語の問題なのかな...
仮に日本語として通じても結局うれしい回答は得られなさそうな感じがしているので
もういいかなというのもあるんですがw
0296デフォルトの名無しさん
2010/06/02(水) 20:55:38何が起こってもしょうがないでしょ
0297デフォルトの名無しさん
2010/06/02(水) 23:23:28積まれているアドレスを見て、lstとmap見て追えばいいよ。
とりあえず、gdb自身に期待してはいけない。
0298デフォルトの名無しさん
2010/07/07(水) 00:06:13MASMとNASM、始めるとしたらどっちがいいですか?
0299デフォルトの名無しさん
2010/07/07(水) 00:18:580300デフォルトの名無しさん
2010/07/07(水) 00:24:290301デフォルトの名無しさん
2010/07/07(水) 00:43:28何するというよりもアセンブリ言語を覚えたいなと思いまして。
>>300
ありがとうございます。
0302デフォルトの名無しさん
2010/07/07(水) 01:08:25違いがわかる
ついでに68系もやった方がいい
0303デフォルトの名無しさん
2010/07/07(水) 01:43:08あるいは、debug.exeでもいいな。
a=100でgね。
0304デフォルトの名無しさん
2010/07/07(水) 02:43:01両方ですか。がんばってみます。68系でやるとしたらおすすめとかありますか?
>>303
ありがとうございます。参考にさせてもらいます。
0305デフォルトの名無しさん
2010/07/07(水) 05:59:20変数を演算=メモリからレジスタへロード・レジスタ演算・メモリへ書き戻し
とかいう機構が見えてくる。
0306デフォルトの名無しさん
2010/07/07(水) 16:44:41学習目的ならNASMかGas
0307デフォルトの名無しさん
2010/07/07(水) 19:05:45何でなんだろ?
0308デフォルトの名無しさん
2010/07/07(水) 23:12:50ありがとうございます。目標ができました。
>>306
ひとまず、NASMとかdebug.exeをやっみて、馴れてきたらMASMという感じでやってみたいとおもいます。
0309デフォルトの名無しさん
2010/09/28(火) 20:26:51PUSHPOPで格納呼び出しするんだけども
アドレスおなじとこに格納しちゃう ちゃんとLADしてひとつ送っているはずなんだけども
0310デフォルトの名無しさん
2010/09/28(火) 20:29:190311デフォルトの名無しさん
2010/09/28(火) 20:46:130312デフォルトの名無しさん
2010/09/29(水) 05:50:41LD GR1,=321
LD GR6,TWO
ST GR6,COUNT
DIV10 LD GR0,ZERO
DLOOP CPA GR1,TEN
JMI DJUMP
SUBA GR1,TEN
ADDA GR0,ONE
JUMP DLOOP
DJUMP LD GR3,GR1
ADDA GR3,#0030
PUSH 0,GR3
CPA GR0,TEN
JPL AFTER
LD GR3,GR0
ADDA GR3,#0030
PUSH 0,GR3
0313デフォルトの名無しさん
2010/09/29(水) 05:52:02ADDA GR5,ONE
ST GR5,ANS
CPA GR6,ZERO
JZE OUTPUT
SUBA GR6,ONE
POP GR3
JUMP POPPER
AFTER ADDA GR6,ONE
LD GR1,GR0
ST GR6,COUNT
JUMP DIV10
OUTPUT LD GR6,COUNT
SUBA GR5,GR6
ST GR5,ANS
OUT ANS,COUNT
ONE DC 1
TWO DC 2
ZERO DC 0
TEN DC 10
ANS DC 0
ADDR DC 0
COUNT DC 3
END
こんな感じです
アスキー表示ながめてて、PUSHが良好に格納されてるのは確認しました
POPがまずいみたいです あと再格納もへたっぴ
0314デフォルトの名無しさん
2010/09/29(水) 10:11:140315デフォルトの名無しさん
2010/09/29(水) 11:00:08セ
ン
ブ
ラ
の
弱
点
縦
に
長
い
0316デフォルトの名無しさん
2010/09/29(水) 12:00:05格納は完璧に321となりますた あとはPOPと再格納をしくじらないのみ
0317デフォルトの名無しさん
2010/09/29(水) 12:05:03きちんと対応が取れているのか?
321で成功しても他の数値で成功するのか疑問
0318デフォルトの名無しさん
2010/09/29(水) 12:18:25それはたぶんだいじょうぶ 今PUSHでなくやろうとして、領域確保がマイナス方向には無理と悟って
手書きで再考するとこです アスキーの挙動みつつ微調整しようと思います ロジックはそほど難が
ないようなので(割り算の仕方とか
桁カウンターが甘いので詰めます
0319デフォルトの名無しさん
2010/09/29(水) 12:20:12これで見やすくなった
0320デフォルトの名無しさん
2010/09/29(水) 12:20:130321デフォルトの名無しさん
2010/09/29(水) 12:24:38ところがCASLくんは#0030番地の値をロードしていたっぽいです
0322デフォルトの名無しさん
2010/09/29(水) 12:26:02希望の光。
0323デフォルトの名無しさん
2010/09/29(水) 12:34:35分かりやすくない?
最大 65535なら たとえば4927なら
10000を引いてみる→引けた回数→0を格納→次の処理に4927
1000を引いてみる→引けた回数→4を格納→次の処理に927
100を引いてみる→引けた回数→9を格納→次の処理に27
10を引いてみる→引けた回数→2を格納→7が余る→7を格納
これなら最大(桁数-1)*9回の引き算でできる
0324デフォルトの名無しさん
2010/09/29(水) 12:37:01しかし素数求数に使いたいんすこれ だもんでいずれはバイト長を無限に対応した桁を
扱えるルーチンでと思いまして
素数の思考ルーチンはもうできてるんす CASLの癖なのかマシン語ってそうなのか たかが数表示で
こんなに手間取るとは。
0325デフォルトの名無しさん
2010/09/29(水) 12:40:18マシン語じゃ"hello world"すら大変だって
0326デフォルトの名無しさん
2010/09/29(水) 12:41:40AB
と表示するのは書けたんで気をよくしてました あまいあまいおれ。
0327デフォルトの名無しさん
2010/09/29(水) 13:30:56偶然(Aの直後にBを置いていたので
とわかりました。まだまだ遠い道のりとなりますた
0328デフォルトの名無しさん
2010/09/29(水) 15:16:08とりあえずプログラムソース公開するときはここ使って
http://codepad.org/
0329デフォルトの名無しさん
2010/09/29(水) 15:33:070330デフォルトの名無しさん
2010/09/29(水) 17:05:400331デフォルトの名無しさん
2010/09/29(水) 18:57:140332デフォルトの名無しさん
2010/09/29(水) 19:39:400333デフォルトの名無しさん
2010/10/02(土) 20:41:240334デフォルトの名無しさん
2010/10/02(土) 23:00:550335デフォルトの名無しさん
2010/10/02(土) 23:08:150336デフォルトの名無しさん
2010/10/14(木) 11:21:43add eax,128としGlobalAllocにeaxを引数で指定するのが分かりやすいと思うのですが
なぜleaを使うのか、その第2オペランドの [eax + 128]の値の意味も教えてください。
ソースは以下です。
www.masm32.com/board/index.php?board=4;topic=1929.4
GetFileSizeでサイズを取得して、それより128バイト以上大きなメモリを
GlobalAllocで確保するところです。
0337デフォルトの名無しさん
2010/10/14(木) 11:28:280338デフォルトの名無しさん
2010/10/14(木) 11:45:04実際には関係ない場合でもinvokeの引数にeaxとedxを使うのをさける人がいる
0339デフォルトの名無しさん
2010/10/14(木) 11:59:26ありがとうございます。
[eax + 128]というのを見ると予測不能な値のように思えてしまうのですが
これでファイルサイズ+128が確保できる理由が分かりません。
eaxはinvoke GetFileSize,[file_handle],NULLが完了したままで
ファイルサイズの値が入っていますよね?
たとえばファイルサイズが7バイトだったとしたら、7+128のポインタなんて
予測不能な値ではないですか?
0340デフォルトの名無しさん
2010/10/14(木) 13:02:14> 予測不能な値
誰にとって?
0341デフォルトの名無しさん
2010/10/14(木) 13:05:51ADD R0, R1, #128
みたいにロードとストア先のレジスタを別々に指定できるが、
x86のADDはロードストアが一緒なので、
結果をECXに代入したい場合でもADDを使うと
MOV ECX, EAX
ADD ECX, 128
としか書けない。これは命令長も増えるし遅い。
LEAの間接dispを使うとその辺を1命令で記述できる。
ステータスレジスタの影響から選択する場合もある。
0342デフォルトの名無しさん
2010/10/14(木) 13:21:310343デフォルトの名無しさん
2010/10/14(木) 13:55:21LEAは速い。LEAはレジスタを節約できる。という理由でLEAが好んで使われていた時期があった。
(最近の状況は知らない。)
AGIストールが発生しやすいという理由で避けられていた時期もあった気がする。
> [eax + 128]の値の意味も教えてください。
[]は間接参照だから、(eax + 128)が示すメモリのアドレス。
すなわちeax(7) + 128そのもの。ポインタが示す先を読む必要は無い。
最適化に興味あるなら、http://www.intel.com/jp/download/index.htmで資料が公開されている。
0344デフォルトの名無しさん
2010/10/14(木) 19:37:51コンピュータではなくて僕の方です。
以下と同様に見えました。
int i=7;
int *p = &i;
int yosokufunou = *(p + 128);
0345デフォルトの名無しさん
2010/10/14(木) 19:45:18・高度なRPG開発が可能な、完全無料のゲーム作成ツールです。
・雰囲気はRPGツクール2000に近い。RPGツクール2000で自作システムを作りこむ際に
不満だったところがいろいろ解消されていて、かなり自由度が高いです。ただし
その分初心者には難しいかも。すでにツクール2000で自作システムを組むのに
慣れた人やRPGツクールでは物足りないけどプログラミングはちょっとという方にお勧め。
・作成したゲームは自由に配布したり、コンテストに投稿することも可能。
また本ソフトを持たない人でもプレイ可能!ファイル暗号化も完備してるよ!
・要望、不満点、バグ報告などなど書き込みお願いします。今もどんどん進化中です。
0346デフォルトの名無しさん
2010/10/14(木) 20:12:31確かに以下で意図は伝わりましたが間違っていましたね。
add eax,128
0347デフォルトの名無しさん
2010/10/14(木) 20:37:510348デフォルトの名無しさん
2010/10/14(木) 20:38:28[]はC言語のアドレス演算子に見えましたが、lea ecx, [eax + 128]は
C言語ユーザはmov ecx,(eax+128)のような視覚的なニュアンスで解釈してよいですか?
0349デフォルトの名無しさん
2010/10/14(木) 20:38:54AVRならまーかせて!
0350デフォルトの名無しさん
2010/10/14(木) 21:00:51置き換えとか考えないで、leaの意味を考えましょう
0351デフォルトの名無しさん
2010/10/14(木) 21:35:550352デフォルトの名無しさん
2010/10/14(木) 22:45:45leaはC言語のアドレス演算子だと思っていました。
.data?
buf1 db 512 dup(?)
.code
lea edi,buf1
これがp_str = &bufみたいなものだと思っていましたが、
lea ecx, [eax + 128]の場合はアドレスではなくて即値みたいなので
アドレスとは関係のない動作みたいに思いました。
0353デフォルトの名無しさん
2010/10/14(木) 23:07:11MASMコンパイルで&がsyntax errorでした。
0354デフォルトの名無しさん
2010/10/14(木) 23:14:190355デフォルトの名無しさん
2010/10/14(木) 23:15:18lea はCの〜とかっていう思考はいらない。
0356デフォルトの名無しさん
2010/10/14(木) 23:20:170357デフォルトの名無しさん
2010/10/14(木) 23:22:120358デフォルトの名無しさん
2010/10/14(木) 23:58:40leaは変数のアドレス取得と、加算演算という2つの利用方法がある
という解釈でよいですか?
>>351のイメージはつかめませんでした。
0359デフォルトの名無しさん
2010/10/15(金) 00:16:050360デフォルトの名無しさん
2010/10/15(金) 00:46:34mov eax, [eax + 128]
lea eax, [eax + 128]
0361デフォルトの名無しさん
2010/10/15(金) 00:55:35mov eax,7+2
と
mov eax,[7+2]
と
mov eax,9
は同じですか?
0362デフォルトの名無しさん
2010/10/15(金) 01:05:11intel形式は、あんまりみないからな、最近
0363デフォルトの名無しさん
2010/10/15(金) 01:10:22mov eax, 7+2 ;eaxに9が代入 (アセンブラが7+2を計算するのでmov eax,9とマシンコードは同一)
mov eax,[7+2] ;eaxに9番地のメモリ内容が代入
mov eax, 9 ;eaxに9が代入
0364デフォルトの名無しさん
2010/10/15(金) 01:22:15それを見ると[]はアドレス演算子に見えます。
9番地のメモリ内容は予測不能な値だと思いましたが
実際に動作させるとmov eax,[7+2]でeaxの値は9になりました。
9番地のメモリ内容が9だったのは偶然とは思えません。
0365デフォルトの名無しさん
2010/10/15(金) 01:31:220366デフォルトの名無しさん
2010/10/15(金) 01:44:00そう考えたので
mov eax,0
mov eax,[7+2]
.if eax==9
、、、
と書いて9になっていることを確認しました。
0367デフォルトの名無しさん
2010/10/15(金) 01:50:210368デフォルトの名無しさん
2010/10/15(金) 01:50:24違いました。366ではだめですね。
アドレス9に0などを書き込むソースが分からないので実験できませんでした。
0369デフォルトの名無しさん
2010/10/15(金) 01:53:06368にも書きましたが、勘違いな実験をしていました。
偶然の可能性は少しはあるわけです。
はっきり確認できたらよいですが。
それより、mov eax,[7+2]でeaxの値が9になることが
正常な結果であれば理由が知りたいです。
0370デフォルトの名無しさん
2010/10/15(金) 01:54:510371デフォルトの名無しさん
2010/10/15(金) 02:10:520372デフォルトの名無しさん
2010/10/15(金) 02:15:160373デフォルトの名無しさん
2010/10/15(金) 03:30:10ml.exeがエラーを表示しました。
immediate operand not allowed
下のようにしてもだめでした。
mov edx,0
mov dword ptr[9],edx
次のようにするとコンパイルできましたがアドレス9に0を代入する目的が果たせていません。
mov edx,dword ptr[9]
mov edx,0
mov eax,[7+2]
.if eax==9
0374デフォルトの名無しさん
2010/10/15(金) 04:07:07mov dword ptr [edx], 0
ニーモニックを意識しなさい
0375デフォルトの名無しさん
2010/10/15(金) 04:28:16ありがとうございます。
mov edx, 9
mov dword ptr [edx], 0
mov eax,[7+2]
コンパイルできました。実行するとエラーになりました。アドレス9は偶然、Windowsの
急所だったみたいで、Windowsがエラーダイアログを出して実行を阻止してくれました。
こうなったらmov eax,[7+2]とmov eax, 9が同一なのかをきちんとした定義で
知るしかないですね。教えてください。
0376デフォルトの名無しさん
2010/10/15(金) 04:36:19ご立派に成長なされました
0377デフォルトの名無しさん
2010/10/15(金) 07:19:42逆アセするとか
でわかるでしょ
0378デフォルトの名無しさん
2010/10/15(金) 11:33:210379デフォルトの名無しさん
2010/10/15(金) 11:33:43leaの特殊性にちっとも気付いていない。
0380デフォルトの名無しさん
2010/10/15(金) 18:15:09本日完成しました なかなか骨が折れました 命令語をよく把握していなかったのが原因でした
0381デフォルトの名無しさん
2010/10/15(金) 18:32:56MOV EAX,DWORD PTR FS:[9]とかやれ
ollydbgとか使え
これでも読んどけ
http://download.intel.com/jp/developer/jpdoc/IA32_Arh_Dev_Man_Vol2A_i.pdf
http://download.intel.com/jp/developer/jpdoc/IA32_Arh_Dev_Man_Vol2B_i.pdf
http://download.intel.com/jp/developer/jpdoc/IA32_Arh_Dev_Man_Vol1_Online_i.pdf
0382デフォルトの名無しさん
2010/10/17(日) 16:05:43最も容量のでかいプログラムってどれくらい?
俺は40kbくらいかな
0383デフォルトの名無しさん
2010/10/17(日) 21:18:110384デフォルトの名無しさん
2010/10/17(日) 21:30:54インラインで済ましたりタイミング関係で一部モジュールで使う程度
ゴミカスのPICは知らないケドwwwww
0385デフォルトの名無しさん
2010/10/17(日) 21:36:260386デフォルトの名無しさん
2010/10/18(月) 01:27:39ひとつのプロジェクトで1Mいくよ。
0387デフォルトの名無しさん
2010/10/18(月) 02:05:29そんなアホなことしてる会社はもう潰れただろ
0388デフォルトの名無しさん
2010/10/18(月) 12:39:44FAXとかワープロとか、独自OSに独自GUIライブラリ構築なんてざらだった。
0389デフォルトの名無しさん
2010/10/18(月) 13:02:50今も現役だよ。
まぁ知られていだろうが、
数十年続いてるし、世界トップシェア。
とはいえ、市場が限られているので、
外部に情報でないだろう。
ちなみにパチじゃないよ。
0390デフォルトの名無しさん
2010/10/18(月) 13:10:54C言語に移行できない理由は?
0391デフォルトの名無しさん
2010/10/18(月) 13:19:34Cにするメリットなんてないだろ?
0392デフォルトの名無しさん
2010/10/18(月) 13:31:140393デフォルトの名無しさん
2010/10/18(月) 13:35:070394デフォルトの名無しさん
2010/10/18(月) 13:41:43第一圧倒的にプログラミングできる人間が多い
おまえの業界は知らんけど
0395デフォルトの名無しさん
2010/10/18(月) 13:50:38アッセンブリソーーーースプリーーーーズ!!
0396デフォルトの名無しさん
2010/10/18(月) 13:54:48「足し算を繰り返せばいいだけじゃん、掛け算なんてイラネ」とか言い出しそうな奴w
0397デフォルトの名無しさん
2010/10/18(月) 14:01:51どちらも並程度の知能すらなくても事足りる
あえて比較するならCの方がCPU等を変えた時に確認すべき事が少なくて楽
0398388
2010/10/18(月) 14:58:23何かを変えることなどできなかったと思われ。なんせ、アイコンデータもデザイナーの絵を方眼紙に写し取ってドットを数えてたし。
新機種開発の時こそそのチャンスなのだけれど、蓋を開けてみたらUI部分だけCに移行していて
従来機種からソースを流用している通信部分は(殆ど書き換えにも拘らず)アセンブラのままなんてことも。
0399デフォルトの名無しさん
2010/10/18(月) 16:17:13その言い方をするなら、
基本的に、ほぼ全てがアセンブラでないと書けない、
ってことになるかな。
コーディング自体はCでも不可能ではないだろうが、
結局アセンブラを見ることになるから、
余計な手間が増えるだけになる。
0400デフォルトの名無しさん
2010/10/18(月) 16:28:26スタックを触ってるとか、そういうコードのことを「アセンブラでないと書けない」って
言うと思うの。
0401デフォルトの名無しさん
2010/10/18(月) 16:36:590402デフォルトの名無しさん
2010/10/18(月) 16:44:06適当に相手しといてください
0403デフォルトの名無しさん
2010/10/18(月) 19:32:510404デフォルトの名無しさん
2010/10/18(月) 20:42:01凄いやつなんだろ?
0405デフォルトの名無しさん
2010/10/21(木) 18:09:160406デフォルトの名無しさん
2010/10/22(金) 00:15:49TEST EAX,EAX
とされていましたが、この式はEAXが0か0以外かを判定するのに使えるのですか?
APIが0を返したならTEST EAX,EAXでZFが1になり、APIが1を返したなら
EAX,EAXでZFが0になるのでしょうか?
0407デフォルトの名無しさん
2010/10/22(金) 00:29:27結果をフラグだけに反映させる。
0408デフォルトの名無しさん
2010/10/22(金) 00:32:55CPUに理解できるの?
0409デフォルトの名無しさん
2010/10/22(金) 00:44:110410デフォルトの名無しさん
2010/10/22(金) 00:49:290411デフォルトの名無しさん
2010/10/22(金) 00:57:430412デフォルトの名無しさん
2010/10/22(金) 01:00:400413デフォルトの名無しさん
2010/10/22(金) 01:04:190414デフォルトの名無しさん
2010/10/25(月) 08:36:060415デフォルトの名無しさん
2010/10/31(日) 13:10:07MS-DOSモードでの説明が多いようだが、
Win32の実行ファイルのフォーマットを理解
すると共に、それに合ったプログラミングっ
てどうやって学習すればいいのか。
0416デフォルトの名無しさん
2010/10/31(日) 14:35:51『This Program Cannot Be Run in DOS Mode.』
がないアセンブリコードなのか疑問だ。
Win32プログラムのアセンブリコードを、nasmとか
masmで説明通りアセンブルしたはずなのに、なぜか
エラー多発になったり訳わからんな。
0417デフォルトの名無しさん
2010/10/31(日) 17:55:16それは実行ファイル生成時にリンカがくっつけるstubだから。
0418デフォルトの名無しさん
2010/11/01(月) 03:14:320419デフォルトの名無しさん
2010/11/01(月) 03:21:400420デフォルトの名無しさん
2010/11/28(日) 22:13:15アセンブリ言語を学んでみたいんだけど
必要なものってコマンドプロンプトだけ?
一応OSはwindows7 64bitなんだけど・・・
0421デフォルトの名無しさん
2010/11/29(月) 01:02:28そんなやりかたでは、独学だと挫折するだけだと思うけど。
本屋か図書館で本を選んで、それに従うことを勧める。
0422デフォルトの名無しさん
2010/11/29(月) 01:47:430423デフォルトの名無しさん
2010/11/29(月) 17:13:500424デフォルトの名無しさん
2010/11/29(月) 17:31:040425デフォルトの名無しさん
2010/11/29(月) 19:28:50Visual C++ Expressに入ってるmlとか
他にも探せばタダで使えるアセンブラがいろいろあるだろ。
0426デフォルトの名無しさん
2010/11/29(月) 21:04:210427デフォルトの名無しさん
2010/11/29(月) 21:17:40答えがほしいだけでは...
0428デフォルトの名無しさん
2010/11/29(月) 21:33:09x86-64の本は見たことないな……
0429デフォルトの名無しさん
2010/11/29(月) 22:08:400430デフォルトの名無しさん
2010/11/30(火) 02:36:45おまえ 2ch は初めてか?力抜けよ?
0431デフォルトの名無しさん
2010/11/30(火) 02:51:44RDTSC命令なんて普通に使うと思うんだが
0432デフォルトの名無しさん
2010/11/30(火) 02:55:3464bitのアセンブラに対応するのが面倒だったか
0433デフォルトの名無しさん
2010/11/30(火) 08:05:14VMのある言語の方がいくつかのプレッシャー(メモリ管理、まずい命令など)が軽くなっていい
SIMDを酷使することができないとか、性能的余裕がないとか
コンピューターの仕組みを知る題材として学んでるだけだから関係ないとか
そういうのはまあVM付きじゃ駄目かもしれない
0434デフォルトの名無しさん
2010/11/30(火) 11:48:24スレタイ
0435デフォルトの名無しさん
2010/12/04(土) 13:41:02そういうのはみんな組込関数として用意されている。
http://msdn.microsoft.com/ja-jp/library/twchhe95.aspx
64ビットでインラインアセンブラがなくなったのは最適化に邪魔になるから説を自分は信じている。
0436デフォルトの名無しさん
2010/12/04(土) 13:54:340437デフォルトの名無しさん
2010/12/04(土) 23:11:180438デフォルトの名無しさん
2010/12/05(日) 02:04:35)'ーーノ( | | | 、 / l| l ハヽ |ー‐''"l
/ D | | |/| ハ / / ,/ /|ノ /l / l l l| l D ヽ
l ・ i´ | ヽ、| |r|| | //--‐'" `'メ、_lノ| / ・ /
| V l トー-トヽ| |ノ ''"´` rー-/// | V |
| ・ |/ | l ||、 ''""" j ""''/ | |ヽl ・ |
| D | | l | ヽ, ― / | | l D |
| !! | / | | | ` ー-‐ ' ´|| ,ノ| | | !! |
ノー‐---、,| / │l、l |レ' ,ノノ ノハ、_ノヽ
/ / ノ⌒ヾ、 ヽ ノハ, |
,/ ,イーf'´ /´ \ | ,/´ |ヽl |
/-ト、| ┼―- 、_ヽメr' , -=l''"ハ | l
,/ | ヽ \ _,ノーf' ´ ノノ ヽ | |
、_ _ ‐''l `ー‐―''" ⌒'ー--‐'´`ヽ、_ _,ノ ノ
 ̄ ̄ | /  ̄
0439デフォルトの名無しさん
2010/12/05(日) 03:08:58Cimpiler Intrinicsの説明に書いてあるね。
If a function is an intrinsic, the code for that function is usually inserted inline, avoiding the overhead
of a function call and allowing highly efficient machine instructions to be emitted for that function.
An intrinsic is often faster than the equivalent inline assembly, because the optimizer has a built-in
knowledge of how many intrinsics behave, so some optimizations can be available that are not available
when inline assembly is used. Also, the optimizer can expand the intrinsic differently, align buffers
differently, or make other adjustments depending on the context and arguments of the call.
VCの場合、アセンブラのいくつかの命令をコンパイラ固有命令として組み込んであって、VCの中でそれを
使ってもらうとinline命令で書いた場合より速くなることがある。その理由は、コンパイラがオプティマイザが
個々の組み込み関数の挙動をよく知っていて最適化するようなコードを吐き出せるかららしい。
ただ、これはあくまでVC固有の機能だから他のコンパイラでは使えないし、移植する場合も面倒になる。
0440デフォルトの名無しさん
2010/12/05(日) 08:27:49)'ーーノ( | | | 、 / l| l ハヽ |ー‐''"l
/ A | | |/| ハ / / ,/ /|ノ /l / l l l| l A ヽ
l ・ i´ | ヽ、| |r|| | //--‐'" `'メ、_lノ| / ・ /
| S l トー-トヽ| |ノ ''"´` rー-/// | S |
| ・ |/ | l ||、 ''""" j ""''/ | |ヽl ・ |
| M | | l | ヽ, ― / | | l M |
| !! | / | | | ` ー-‐ ' ´|| ,ノ| | | !! |
ノー‐---、,| / │l、l |レ' ,ノノ ノハ、_ノヽ
/ / ノ⌒ヾ、 ヽ ノハ, |
,/ ,イーf'´ /´ \ | ,/´ |ヽl |
/-ト、| ┼―- 、_ヽメr' , -=l''"ハ | l
,/ | ヽ \ _,ノーf' ´ ノノ ヽ | |
、_ _ ‐''l `ー‐―''" ⌒'ー--‐'´`ヽ、_ _,ノ ノ
 ̄ ̄ | /  ̄
0441デフォルトの名無しさん
2010/12/05(日) 11:44:060442デフォルトの名無しさん
2010/12/05(日) 16:00:29インラインアセンブラも同じくらい移植性はどっこいどっこいだけどな。
0443デフォルトの名無しさん
2010/12/05(日) 17:11:37C/C++は速く動けばいい
0444デフォルトの名無しさん
2010/12/05(日) 22:23:26べつに無理に最適化してもらわなくていいから、インラインアセンブラを
使いたい時ってあるよね
VCはそういうの無視してるわけか
MASMで書いてリンクしろとか面倒だよなあ
0445デフォルトの名無しさん
2010/12/05(日) 22:59:55結局 MASM/NASM で書いてリンクした方が楽だったりする
0446デフォルトの名無しさん
2010/12/06(月) 03:07:240447,,・´∀`・,,) ・・・→ -○○○
2010/12/07(火) 03:27:16フルアセンブラに対するインラインアセンブラの最大の利点ってCのシンボルと直接やり取りできることじゃね?
コンパイラよりも賢いコードが書ける人で、関数丸ごとじゃなくてループの内側だけ最適化したいとか
そういうニーズはいくらでもあると思うけどな。
やっぱC++ 0x(実質1x?)のlambda式みたいにゆるく書きたいじゃんw
シンボル解決方法とかABIとかを意識する必要は無いしね。
(特にC++のメンバ関数なんか全部アセンブラで書くと大変)
Intelコンパイラだと普通に64ビットでもASM使えるのね。
AMD独自命令はemitでもやらないと使えないけどw
0448デフォルトの名無しさん
2010/12/10(金) 14:13:22ごもっともでございます。
>機械語と1対1に対応している
えっ。
0450デフォルトの名無しさん
2010/12/10(金) 16:05:240451デフォルトの名無しさん
2010/12/10(金) 16:10:36を機械語に対応させてみてくれ
0452デフォルトの名無しさん
2010/12/10(金) 17:34:350453デフォルトの名無しさん
2010/12/11(土) 03:37:19昔はそうだったの。それにそう言ったほうがわかりやすいだろ。
0454デフォルトの名無しさん
2010/12/11(土) 09:07:290455デフォルトの名無しさん
2010/12/11(土) 18:25:23マジレス。手間かかり過ぎじゃね?
0456デフォルトの名無しさん
2010/12/12(日) 03:28:051つのニーモニックで1単位の命令だからいいんだよ。
1つのニーモニックで2バイトの命令になっても、それで1つの処理をするわけだから1:1。
Cだと1行のコードが複数のニーモニックに変換されるから1:1にならない。
0457デフォルトの名無しさん
2010/12/12(日) 03:30:22当然手間はかかるけど、実行速度は平均してCの10倍くらい出るから、頻繁に呼ばれる部分だけでも
アセンブラで書き直すメリットがある。
0459デフォルトの名無しさん
2010/12/12(日) 10:12:22なんだその理屈。
>>457
平均して10倍って……
0460デフォルトの名無しさん
2010/12/12(日) 14:15:2700 84 e0 00 00 00 00 add%al,0x0(%eax,%eiz,8) 7バイトnop
INDEX=100 && BASE!=100 だと全部nopになるらしい
01 04 05 00 00 00 00 add %eax,0x0(,%eax,1)
01 80 00 00 00 00 add %eax,0x0(%eax)
この二つは意味的にはまったく同じといっていいかな?
0461デフォルトの名無しさん
2010/12/12(日) 14:17:08CPU に因っては 1:1 にならない
RISC系のプロセッサだと1ニーモニックが複数のニーモニックを合成した
マクロニーモニック的なもののことは多々ある
# 条件分岐系はほとんどそんな感じ?
また、実際にはそんなインストラクションは存在しないがニーモニックとしては
記述可能なものもあったりする
# nop が mov r0,r0 に展開されるとか cmp が sub r1, r2, r0 に展開されるとか
0462デフォルトの名無しさん
2010/12/12(日) 14:32:28複数の機械語がありうるアセンブリ言語があるかな
0463デフォルトの名無しさん
2010/12/12(日) 14:36:44勘違いしてた
0464デフォルトの名無しさん
2010/12/12(日) 18:55:35コードの違いだけなら10倍にはならないけど、Cだとランタイムライブラリが必ず入るから、
オールアセンブラの実行ファイルと比べて全体のサイズがかなり大きくなる。
それを読み込むのにいつも同じ時間が余計にかかるから、
実際に起動してから終了するまでの時間は10倍くらいになる。
Cと比べてさえその程度だからJavaとかLL言語と比べたら起動から終了までの差は100倍くらいになる。
0465デフォルトの名無しさん
2010/12/12(日) 18:58:380466デフォルトの名無しさん
2010/12/12(日) 19:31:56シェアードライブラリにしたって実行できるサイズ分先読みする、
オーバーヘッドは発生しますが何か?
0467デフォルトの名無しさん
2010/12/12(日) 19:59:16CでもPerlでも簡単にかける方でやるわ。
0468デフォルトの名無しさん
2010/12/12(日) 20:09:53それでもランタイム不要のアセンブラに比べれば充分でかいんだが。
それにDLLなんてもんは起動されたときたまたまメモリになかったら読み込まれるしくみになってるから
使用頻度が低ければ起動されたときメモリに入っていない確率が高い。
それとも一度起動してDLLをメモリに読み込ませてすぐ終了させ、再度起動するような使い方でもする?アホだろ。
0469デフォルトの名無しさん
2010/12/12(日) 20:12:37サーバ用アプリでそれやると、1000人アクセスされたら1000回の無駄な仕事が発生する。
10000人なら10000倍になる。もしアセンブラで組んであったらサーバの数を大幅に減らせる。
0470デフォルトの名無しさん
2010/12/12(日) 20:22:15結局標準ライブラリ相当のものつくんなきゃいけないんで大差ないんちゃうか?
今時のOSだとテキストセグメントなんてキャッシュ/共有するだろうし
0471デフォルトの名無しさん
2010/12/12(日) 20:24:250472デフォルトの名無しさん
2010/12/13(月) 00:57:21同じ動作をするサンプルプログラムを作ってもCとアセンブラで大きさが全然違う理由がなぜかわかってないんじゃないかな。
わかってればそんなこと言うはずがないんだが。
0473デフォルトの名無しさん
2010/12/13(月) 01:26:230474デフォルトの名無しさん
2010/12/13(月) 01:44:47組み込みでもない限り大してちがわんとおもうぞ
printf をアセンブラで実装しても C で書いたコード大してかわらんかったし、
RISC 系のプロセッサだと、ものによっては最適化された C のコードの方が小さ
かったりするしな
グローバル変数アクセスのプロファイル結果をフィードバックするとかアセンブラ
じゃとんでもなく手間だし
俺はアセンブラでやるのはリーフルーチンと最内周ループくらいなもんだわ
0475デフォルトの名無しさん
2010/12/13(月) 01:45:000476デフォルトの名無しさん
2010/12/13(月) 01:50:03手間がかかるのもその通りだし、全部アセンブラでやれと言ってるわけでもない。
もしやればアセンブラにはそれだけの能力があるってこと。
それがわかって、手間と効率のバランスを取るためにアセンブラを適度に使うのが普通だけど、
極限の性能を出したいと思えば、アセンブラの割合が増えるだろうということ。
0477デフォルトの名無しさん
2010/12/13(月) 01:55:520478デフォルトの名無しさん
2010/12/13(月) 02:22:08だから全部アセンブラで書けばそうなると言ってるんだが。
全部というのはライブラリも含めて、必要なルーチンは全部アセンブラで書いた場合という意味。
たとえばCのprintfは冗長だ。単に文字を表示するだけならアセンブラでずっと小さく書ける。
早いかどうかは、出来上がった実行ファイルのサイズを比べてみること、実行速度を測ること。
もし10倍出せなかったらアルゴリズムを考え直せ。
簡単な処理の場合、アセンブラならレジスタだけでしてしまうこともできる。
Cのノウハウと同じようにアセンブラ独自のノウハウも駆使すればもっと速くできる。
できないと言うなら無理にとは言わないが。
0479デフォルトの名無しさん
2010/12/13(月) 03:51:280480デフォルトの名無しさん
2010/12/13(月) 04:58:32ちがうよ。遅かったり冗長だと思ったらアルゴリズムを最適化させれば速くなるし、無駄も減るだろと言ってる。
いらない機能が含まれてるのにわざわざそれを使うのがいいと思うなら遅くても文句言わずにC使ってればいい。
どっちでも選べるんだから、どうするかは自分で決めたらいい。
わざわざアセンブラ使うのは少しでも速くしたいからだろ。だったらこういうことに気を遣わない人は使うべきじゃない。
いくらアセンブラだって無駄なコードばかり書いてたら速くはならないんだから。
Cはレジスタが直接見えないからレジスタを意識したコードが書きにくい。
アセンブラはレジスタが見えるから、レジスタを意識したコードが書ける。
今は64bit CPUが当たり前になって386時代よりレジスタが何倍も増えたが、
Cコンパイラのほうはまだ64bitレジスタ全部を使って充分に最適化できるところまできていない。
64bit CPUのレジスタは汎用レジスタだけでも16本あるから、小さいルーチンなら全部レジスタ内で
処理できる。これだけでもかなり速く動かせる。
0481デフォルトの名無しさん
2010/12/13(月) 07:02:010482デフォルトの名無しさん
2010/12/13(月) 07:25:45思い込み乙
0483デフォルトの名無しさん
2010/12/13(月) 08:25:008086時代にprintfをアセンブラ書いたことあるけど、早くなったとは思わなかったな、小さくはなったけど
0484,,・´∀`・,,) ・・・→ -○○○
2010/12/13(月) 09:26:55インライン展開による最適化ができなくなるのでその辺も考慮しないと駄目。
モダンなCPUの特性は人よりコンパイラのほうがよく知ってることも多い。
0485デフォルトの名無しさん
2010/12/13(月) 10:30:26そこに盛り込まれてる高速化の技術が100%分かるもんなの?
0486デフォルトの名無しさん
2010/12/13(月) 10:38:11標準ライブラリには整数版のprintf()が用意されている場合もあったね。
0487デフォルトの名無しさん
2010/12/13(月) 10:39:45そりゃ分るよ
自分の書いたコードと逆アセンブルしたコードを比較してみ
コンパイラがなにしたかがある程度分かるから
0488デフォルトの名無しさん
2010/12/13(月) 13:16:220489デフォルトの名無しさん
2010/12/13(月) 13:20:370490デフォルトの名無しさん
2010/12/13(月) 14:16:040491デフォルトの名無しさん
2010/12/14(火) 16:01:44ループさせて*を複数格納したいのですが出来ません
CASL2です
0492デフォルトの名無しさん
2010/12/16(木) 08:05:05MOV HL,#buf ; バッファアドレス
LDA '*' ; セットする文字
LOOP:
STA M ; (HL)のアドレスに1文字格納
INC HL ; バッファアドレスを進める
DEC BC ; カウントダウン
BNZ LOOP ; 回数分ループ
CASLのニーモニックじゃないから翻訳しろ。HLとかBCは16bitのレジスタ、
Aは8bitのレジスタだ。
0493デフォルトの名無しさん
2010/12/16(木) 08:19:050494デフォルトの名無しさん
2010/12/16(木) 10:40:42ld b,10
ld hl,buf
ld a,'*'
loop:
ld (hl),a
inc hl
djnz loop
0495デフォルトの名無しさん
2010/12/16(木) 16:11:000496デフォルトの名無しさん
2010/12/21(火) 13:21:35.text:004012D6 xchg eax, [esp+0]
.text:004012D9 sub eax, 2Dh
.text:004012DC xchg eax, [esp+0]
.text:004012DF retn
.text:004012DF sub_4012D6 endp
0497デフォルトの名無しさん
2010/12/21(火) 13:25:510498デフォルトの名無しさん
2010/12/21(火) 14:53:120499デフォルトの名無しさん
2010/12/21(火) 16:25:19-d 0000 00ff
(略)
-r
AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=198D ES=198D SS=198D CS=198D IP=0100 NV UP EI PL NZ NA PO NC
198D:0100 0000 ADD [BX+SI],AL DS:0000=CD
-a 00b0
198D:00B0 mov cx,[0080]
198D:00B4 mov si,0081
198D:00B7 mov di,00c0
198D:00BA rep movsb
198D:00BC nop
198D:00BD
-g=00b0,00bc
AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=20A1 DI=20E0
DS=198D ES=198D SS=198D CS=198D IP=00BC NV UP EI PL NZ NA PO NC
198D:00BC 90 NOP
-d 0000 00ff
(略)
最後に
SI=20A1 DI=20E0
になってるのはなぜ?
0500デフォルトの名無しさん
2010/12/21(火) 18:26:02(略)
だから。
0501デフォルトの名無しさん
2010/12/21(火) 18:30:29cx に 2021 が入ってるな
0502デフォルトの名無しさん
2010/12/21(火) 19:00:45だとしたら、mov cl, [80]; mov ch, 0; か、xor cx, cx; mov cl, [80]; だな。
0503デフォルトの名無しさん
2010/12/23(木) 09:46:180504デフォルトの名無しさん
2010/12/23(木) 11:45:37出来ました
本当にありがとうございました
0505デフォルトの名無しさん
2010/12/23(木) 16:42:43F11押したら動いたんだけど、どう見てもアドレスがUHのときと違ってあれぇって思ったんです。
で・・・おーぺんで開いてみたらUHと同じ感じになりました。
この状態で皆さん解析されてるんですか?
00534FE0 /. 8B81 D8010000 MOV EAX,DWORD PTR DS:[ECX+1D8]
00534FE6 |. 83F8 10 CMP EAX,10
00534FE9 |. 74 05 JE SHORT 00534FF0
00534FEB |. 83F8 20 CMP EAX,20
00534FEE |. 75 21 JNE SHORT 00535011
00534FF0 |> 8A81 28010000 MOV AL,BYTE PTR DS:[ECX+128]
反射は難しそうなので、今出てる奴が次に対策された時自分でなんとかできるようにしたいです。
530B87 → D5 58 だったのに
534FE7 → 45 62 になっていて意味がわからないので(元はF8 10 ですよね・・・)
↑のcmpとかそうゆうのにヒントがあるのかと思ったんですが
そこを調べていけば次回アドレス変わった時も自分で何とかできるようになりますか?
他に聞けるような場所がないのですみません;
0506デフォルトの名無しさん
2010/12/26(日) 11:00:350507デフォルトの名無しさん
2011/02/27(日) 11:34:13.140508デフォルトの名無しさん
2011/03/01(火) 23:47:01.79すごい初歩的なんすけど、
MOV EAX,DWORD PTR FS:[0]
このFS:[0]ってどんな意味になるんでしょうか?
DWORD 4バイト
PTR 型
FS:[0] ?? をEAXに代入
このFSがわからねーっす。教えて下さい。
0509デフォルトの名無しさん
2011/03/02(水) 02:20:28.310510デフォルトの名無しさん
2011/03/02(水) 02:47:08.43http://programming.jugglershu.net/study/seh.html
0512デフォルトの名無しさん
2011/03/04(金) 18:49:03.320513デフォルトの名無しさん
2011/03/05(土) 15:19:01.72無くはないが。
0514デフォルトの名無しさん
2011/03/05(土) 16:16:00.53{;;;;;;ゝ T辷iフ i f'辷jァ !i;;;;; 人間が書くコードよりも、圧倒的に賢い
ヾ;;;ハ ノ .::!lリ;;r゙
`Z;i 〈.,_..,. ノ;;;;;;;;
,;ぇハ、 、_,.ー-、_',. ,f゙: Y;;f. そんなふうに考えていた時期が
~''戈ヽ `二´ r'´:::. `! 俺にもありました
0515デフォルトの名無しさん
2011/03/06(日) 22:53:42.760516デフォルトの名無しさん
2011/03/10(木) 11:23:01.07人材育成もしないで即戦力だけ欲しいとか、どんだけ経団連はわがままなんだよ。
0517デフォルトの名無しさん
2011/03/10(木) 15:01:55.130518デフォルトの名無しさん
2011/03/10(木) 21:57:32.46著者:石原慎太郎
0519デフォルトの名無しさん
2011/03/24(木) 23:08:51.850520デフォルトの名無しさん
2011/04/16(土) 14:09:02.86PUSH 1
PUSH 2
↑のようにスタックに値を格納したあと、
[2]と[0]は取り出さず[1]を最初に取り出す方法を述べよ
0521デフォルトの名無しさん
2011/04/16(土) 14:10:11.74問題文が糞で話にならない。
0523デフォルトの名無しさん
2011/04/17(日) 03:04:00.29その頃同じせりふを言われたら、顔真っ赤だろうに。
こんな過疎スレでイキガル522
0524デフォルトの名無しさん
2011/04/17(日) 04:36:51.690525デフォルトの名無しさん
2011/04/19(火) 18:25:02.68アセンブリ言語でオペラントの数字の最初につける#はどの様な意味でしょうか?
例DC #7FFF
0526デフォルトの名無しさん
2011/04/19(火) 18:32:05.110528デフォルトの名無しさん
2011/04/22(金) 18:24:07.86POP
0529デフォルトの名無しさん
2011/06/13(月) 00:21:56.90全く想像がつきません...
0530デフォルトの名無しさん
2011/06/13(月) 06:59:59.920531デフォルトの名無しさん
2011/06/13(月) 07:30:19.020532デフォルトの名無しさん
2011/06/13(月) 08:07:30.170533デフォルトの名無しさん
2011/06/13(月) 12:04:05.53kernelが使う命令は1論理MPUの場合と同じ。
複数MPUの起こし方については、APICについて調べてみるとか。
0535デフォルトの名無しさん
2011/06/14(火) 22:29:42.51スピンロックってトイレに例えればドアが開くまで延々とノックし続けてるようなもんだろ?
基地外そのものじゃん
0536デフォルトの名無しさん
2011/06/14(火) 23:33:21.25コストの低い順に
・RCU的な手法
・CASを使用したウェイトフリーな手法
・CASを使用したリトライ手法
・スピンロック
・スリープロック
だと思う。
当然、適用可能な範囲の広さは逆順になる。
利用したコードの書き易さはまた別の順になるかな。
0537デフォルトの名無しさん
2011/06/24(金) 00:05:37.61なんちゅー例えやw
0538デフォルトの名無しさん
2011/06/24(金) 00:32:08.200539デフォルトの名無しさん
2011/07/09(土) 09:24:24.73MIPS なモバギを使っていた時に MIPS のアセンブラを勉強しておけば良かったなあ・・・
とか、最近になって後悔している・・・
0540デフォルトの名無しさん
2011/07/09(土) 12:17:56.690542デフォルトの名無しさん
2011/07/28(木) 00:19:28.17○みんなのNASM天国
0543デフォルトの名無しさん
2011/07/30(土) 14:15:32.110544デフォルトの名無しさん
2011/08/19(金) 08:08:14.25これって何やってるんでしょうか?
0545デフォルトの名無しさん
2011/08/19(金) 08:21:00.792バイトのNOPという意味がある、のかも
0546デフォルトの名無しさん
2011/08/19(金) 15:18:58.660547デフォルトの名無しさん
2011/08/19(金) 20:33:43.750548デフォルトの名無しさん
2011/08/26(金) 08:39:40.040549デフォルトの名無しさん
2012/02/12(日) 10:36:13.74少ないアドレスでもいっぱい使えるんじゃないの?
0550デフォルトの名無しさん
2012/02/12(日) 11:32:55.34System/360以前のコンピュータにはそういうの多かったけど。
0551デフォルトの名無しさん
2012/02/14(火) 12:34:19.830552デフォルトの名無しさん
2012/07/22(日) 22:10:35.470553デフォルトの名無しさん
2012/07/22(日) 22:11:05.86■ このスレッドは過去ログ倉庫に格納されています