X



アセンブラ 13
レス数が1000を超えています。これ以上書き込みはできません。
0002デフォルトの名無しさん
垢版 |
2011/08/28(日) 15:27:22.39
> アセンブラを勉強するのにいい、unix系の本がありますか?

「プログラミングの力を生み出す本」がわりと良かったのだが在庫切れ増刷未定のようだな。
0004uy
垢版 |
2011/08/29(月) 06:06:41.24
>>3
こういう奴って
どのバージョンのカーネルのどのファイルのアセンブラソースさしてんだ

他の奴は答えなくていいから ちょっとお前答えてみろよ

で、そのソースファイルを読むとどういうアセンブラの知識がみに付くのか、言ってごらん


知ったかぶりでカーネルカーネルいってるなら 責任とって死ねよお前
0006デフォルトの名無しさん
垢版 |
2011/09/03(土) 07:38:26.09
>>4
3じゃないがLinux 0.01のboot.s head.sなんかはよんでおいたほうがいいな。
16bit real modeでのBIOS interrupt callの使い方から、32bit保護モードへの以降
gdtr idtr等のディスクリプターテーブル、ページング機構の準備とか。
アセンブリの知識もあるけどx86アーキテクチャの知識も身につく
0008デフォルトの名無しさん
垢版 |
2011/09/13(火) 08:07:27.52
ザイログ形式以外身につかない
0009デフォルトの名無しさん
垢版 |
2011/09/14(水) 14:13:17.97
Z80をIntelニーモニックで解説している本で勉強すればいいんじゃね?
(俺はZilogで覚えちゃったからMOVとかわからんちん)

それ以上の奴をいきなり最初にやるのは敷居が高い気がする
0010デフォルトの名無しさん
垢版 |
2011/09/14(水) 16:15:16.64
マシン語レベルで同じなんだから
あとはコンパイラがザイログ形式を受け付けるか受け付けないかの違いでしかない

シンプルで使いやすいザイログ形式がこれだけ干されてるのが不思議だ
8080ニーモニック    Z80ニーモニック
MOV A,M       LD A,(HL)
MOV M,A       LD (HL),A 
LDAX B         LD A,(BC)
LDAX D         LD A,(DE)
STAX B         LD (BC),A
STAX D         LD (DE),A
LDA 1234       LD A,(1234)
STA 1234       LD (1234),A

LD一つで済むだろ
0014デフォルトの名無しさん
垢版 |
2011/10/07(金) 17:08:46.15
0f 01 d8 vmrun
0f 01 d9 vmmcall
0f 01 da vmload
0f 01 db vmsave
0f 01 dc stgi
0f 01 dd clgi
0f 01 de skinit
0f 01 df invlpga

オペコード表には載ってないけどこんな命令あったのか
0016デフォルトの名無しさん
垢版 |
2011/10/07(金) 20:00:51.00
>>15
あーそれでしたどうもです
インテルのマニュアルには当たり前だけど何も載ってないから知らなかった
0017デフォルトの名無しさん
垢版 |
2011/10/10(月) 12:39:42.35
longモードで
40 01 00 rex add %eax,(%rax)
01 00 add %eax,(%rax)
この二つは実質的にどういう違いがあるんでしょうか?
0018デフォルトの名無しさん
垢版 |
2011/10/10(月) 13:32:41.88
x86で、アセンブラのソースとしては区別がつかない、ことなったバイナリ機械語列が
あることについての疑問?
特に差はないよ。昔からある。
0019デフォルトの名無しさん
垢版 |
2011/10/10(月) 13:52:38.18
REXプリフィクスのWビットを作った目的は
新たに増えた8本のレジスタの下位32/16ビットをアクセスするためということでいいんでしょうか?
オペランドサイズを32bitにするだけならREXプリフィックスなしの命令を使えば済むはずですよね
66とREX.Wの二つのフラグがあって分かりにくいです
0020デフォルトの名無しさん
垢版 |
2011/10/22(土) 07:51:13.15
C言語に挫折したので、アセンブラから修行しようと思います。
シンプルで学びやすく資料が多いものとなればZ80になりますでしょうか?
定番と呼べる解説書などあったら紹介してください。
0021デフォルトの名無しさん
垢版 |
2011/10/22(土) 10:45:32.09
CASL2(情報処理試験用の架空アセンブラ)という手もある
素人向けの資料に関してはかなり多い、試験対策の参考書が大量に出回ってるからな
0022デフォルトの名無しさん
垢版 |
2011/10/22(土) 12:06:05.99
CASLはやめとけ。

今時バイトアドレッシングじゃないアーキテクチャで入門の勉強しても、
後でわかりにくくなるだけだ。
0023デフォルトの名無しさん
垢版 |
2011/10/22(土) 12:57:19.77
この人のやりたいのはC言語じゃね?
C言語の予備知識つける程度にならあれで充分な気もするが
0024デフォルトの名無しさん
垢版 |
2011/10/24(月) 21:59:25.14
>>20
16bitマイコンが良いんじゃない?
秋月その他でキットが買えるルネサスのH8とか、TIのMSP430とか。
どちらも開発ツールは使いやすいとは言えないかもしれんが、
命令セット自体は割とシンプルで癖もなく使いやすい。
0028デフォルトの名無しさん
垢版 |
2011/10/26(水) 10:31:41.22
>>27
これは?
Professional Assembly Language (Programmer to Programmer) by Richard Blum
http://www.amazon.com/Professional-Assembly-Language-Programmer/dp/0764579010/ref=sr_1_1?ie=UTF8&qid=1319591733&sr=8-1

あと新しめなのが
The Art of Assembly Language by Randall Hyde
http://www.amazon.com/Art-Assembly-Language-Randall-Hyde/dp/1593272073/ref=sr_1_5?ie=UTF8&qid=1319591733&sr=8-5

この本ではHLA (High Level Assembler)というPascalっぽい独自のマクロアセンブラを使ってるね。
http://homepage.mac.com/randyhyde/webster.cs.ucr.edu/index.html
0030デフォルトの名無しさん
垢版 |
2011/12/12(月) 06:43:54.37
x86で処理実行するコアを指定する命令を教えてください
0032デフォルトの名無しさん
垢版 |
2011/12/15(木) 12:52:59.14
>>31
ありがとう。
こういうコマンドはどうやって実装してるのかな?
インテルのx86の説明書読んだけど、見つけられなかった。
0033不明なデバイスさん
垢版 |
2011/12/15(木) 14:47:12.08
読むもの間違ってる。CPUが勝手にプロセスをスイッチするわけないだろ?
関連する命令は載ってるだろうがそれだけでは何も解決しない。
自分でマルチプロセッサ対応のSMPマルチタスキングスケジューラーを作るなら、BSDかlinuxのカーネルのソースでも読めばいい。
OSがあるならAPI呼べ。
0034デフォルトの名無しさん
垢版 |
2011/12/16(金) 03:46:10.74
x86にどんな命令があるかって
インテルから説明書とか仕様書のコピーとかそんな感じのもの買わないと分からない?
0037デフォルトの名無しさん
垢版 |
2012/02/25(土) 17:08:40.88
x86のアセンブラでプログラミングをしたいのですが、
アセンブラ用のエディタとかIDEとかって無いのですか?
0039デフォルトの名無しさん
垢版 |
2012/02/25(土) 19:01:04.15
emu8086っての使ってた
15日ぐらいの試用でデバッガは使えなくなるけど自己解決しました
004037
垢版 |
2012/02/25(土) 21:00:01.36
>>39
使ってみましたが、入力画面がバグりますね…。
ググったらFASMのfreshっていうのがけっこう高機能そうなのでこれ使ってみます。
64bit非対応なのが難ですが。
0042デフォルトの名無しさん
垢版 |
2012/03/17(土) 17:02:20.04
アッセンブリブリ
0045デフォルトの名無しさん
垢版 |
2012/03/18(日) 13:52:08.72
>>37
インラインアセンブラがオススメやで?
逆アセンブルウィンドウとかも勉強になるしな
だから普通のVisual Studioちゃん
0050デフォルトの名無しさん
垢版 |
2012/03/26(月) 02:30:25.17
gasで最近.intel_syntax使い始めたんだけど、
いままで

movw $Label, %SI

って書いてたのを

mov SI, Label

にすると即値代入じゃなくなってしまう。
どうすればいいんだろう。
0052デフォルトの名無しさん
垢版 |
2012/03/26(月) 02:37:12.06
masm系だとoffset Labelだけど
gasだとintel_syntaxでも$Labelじゃなかったっけ?
自信ないけど。
0054デフォルトの名無しさん
垢版 |
2012/03/26(月) 02:45:03.10
>>50
gasなんて所詮はコンパイラの出力をアセンブルする程度のツールなんだから、縁を切るチャンスと思うほうが吉。
0055デフォルトの名無しさん
垢版 |
2012/04/14(土) 10:08:42.94
初歩的な質問ですまないけど一つ教えて。
call label_name@xxx
(xxxは整数値)の@xxxは何を意味するのでしょうか?

見かけたのは↓の"call _GetStdHandle@4"などの表記です。
ttp://ja.wikibooks.org/wiki/X86%E3%82%A2%E3%82%BB%E3%83%B3%E3%83%96%E3%83%A9/GAS%E3%81%A7%E3%81%AE%E6%96%87%E6%B3%95
005855
垢版 |
2012/04/15(日) 03:55:29.17
>>57
thx.
そういう情報ってどこか集まっているサイトか資料(本とか)あるんですか?
ここで質問する前に結構探したつもりなんですが…。
0059デフォルトの名無しさん
垢版 |
2012/04/15(日) 16:20:37.25
>>58
検索するとしたら "アセンブラ 呼び出し規約" かなあ。
例えば↓とか。
ttp://ray.sakura.ne.jp/asm/9.html
0060デフォルトの名無しさん
垢版 |
2012/06/21(木) 21:51:25.92
BIOSでhello worldを表示するためのプログラムを作ってみたんですが、何も表示されません。
「mov (%bx), %al」コレがマズイ気がするのですが、表示する方法を教えてもらえませんか?

.code16
.text
_start:
.global _start
mov $msg, %dx
jmp loop1

loop:
mov $0x00, %bh
mov $0x07, %bl
mov $0x0e, %ah
int $0x10
loop1:
mov %dx, %bx
mov (%bx), %al
inc %dx
cmp $0, %al
jne loop

msg:
.ascii "Hello World\r\n\0"
end:
.org 0x200-2
.word 0xaa55
0062デフォルトの名無しさん
垢版 |
2012/06/21(木) 22:50:24.78
>>61
vmwareです。
正直あまりわかってないけど、昔は同じようなプログラムを作った。
006560
垢版 |
2012/06/21(木) 23:33:32.01
知ってたらでいいんで、文字列の目の前でcallする以外のスマートな方法ありますか?
FreeBSDのブートプログラム見たらそんなのないけど、アセンブラの知識不足でよくわかりません。
006760
垢版 |
2012/06/21(木) 23:40:09.64
それも不足してると思います。
006960
垢版 |
2012/06/21(木) 23:46:57.54
一番下以外はvmwareで試しました。(おかしな表示になりました)。
Windowsじゃなくて、LinuxなんでDOS窓では動かしてません。
一番下のは明日やります。

アドバイスくれた人ありがとう。
釈然としませんが、とりあえずcallを使うと上手く行くらしいことだけわかりました。
007160
垢版 |
2012/06/22(金) 00:10:17.98
dosemuインストールしましたが、使い方を調べてみます。
007460
垢版 |
2012/06/22(金) 01:16:06.81
>>73
それはわかったのですが、なぜか文字化けor表示されないのです。
>>63のサイトでは、callを使えとあるんですが、いまいち理由がわからず困っています。
007560
垢版 |
2012/06/22(金) 01:24:53.38
コンパイルオプションの問題でした。
スレを汚してすみません。
0076デフォルトの名無しさん
垢版 |
2012/06/22(金) 03:35:26.45
callに呼応しているのはpop %bp。
IA32ではipを直接movしたりip相対でアドレシングすることができないから
その代わり。
007760
垢版 |
2012/06/25(月) 00:29:00.44
>>76
遅くなりましたがありがとうございます。

割り込みに関するIDTRを調べているのですが、1組6byteのテーブルの内容がよくわかりません。
持っている本には、
1byte:ループカウンタ
1byte:P:DPL:タイプ
2byte:制御ワード
2byte:ハンドラへのジャンプテーブル
とあるのですが、ここでループカウンタと制御ワードの意味がわかる方がいれば教えてください。
0081デフォルトの名無しさん
垢版 |
2012/06/27(水) 23:21:56.66
NASMで「mov byte [es:edi], al」をgasで書き換えるとどうなるでしょうか?
0087デフォルトの名無しさん
垢版 |
2012/06/28(木) 22:54:47.43
int main(void)
{
 __asm__("nop\n\tnop\n\tnop\n\tnop\n\tnop");
}
てのをコンパイルして、nopの所を適当なコードに書き換えてしまえばいいんでないかい
0089デフォルトの名無しさん
垢版 |
2012/09/26(水) 19:30:11.06
nasm hoge.asm -o hoge.img
で良いじゃん。中身が単一の命令なら、それだけ吐き出されるだろ?
0090デフォルトの名無しさん
垢版 |
2012/10/08(月) 02:03:11.10
おすすめのアセンブラをおせーて
0091デフォルトの名無しさん
垢版 |
2012/10/08(月) 02:08:26.63
どんなアセンブラがお望みだい
x86系かい
armかい
役にたってもたたなくても、ともに300ルピーだよ
いっひっひ
0092デフォルトの名無しさん
垢版 |
2012/10/08(月) 02:52:39.98
>>90
MicrosoftのMACRO-80はインテルニモニックにもザイログニモニックにも対応してるので超オススメ!
マクロも強力だし、最新版は6502にも対応してるヨ!
0093デフォルトの名無しさん
垢版 |
2012/10/08(月) 03:55:52.59
★修学旅行、韓国から国内に変更…宮崎・日南高

 日本と韓国の関係悪化を受けて、宮崎県立日南高は2年生27人が12月に予定していた韓国への
修学旅行を国内に変更した。

 日南高によると、同校の修学旅行は韓国と国内の二つから選べることになっており、今年は2年生
170人のうち、143人が東京や群馬などの国内を選択。27人が同校の姉妹校・冠陽高があるソウル
などへの旅行を希望していた。

 竹島問題などを巡って、日韓関係が悪化していることから、韓国への修学旅行について慎重に検討した
結果、「韓国の情勢が不透明で、生徒の安全などを考慮した」として、行き先を国内に一本化したという。

 県内の別の高校も来年3月に計画している韓国への修学旅行について、変更を検討しているという。

http://www.yomiuri.co.jp/kyoiku/news/20121006-OYT8T00695.htm
0098デフォルトの名無しさん
垢版 |
2012/10/08(月) 15:23:18.91
>>92
MASM はどう?
0103デフォルトの名無しさん
垢版 |
2012/11/05(月) 01:27:09.80
MOVNTDQなどでIA-32アーキテクチャ解説書に書かれている「非テンポラルなヒントを使用して、
メモリへの書き込み時にデータがキャッシュしないように防ぎ…」の「非テンポラルなヒント」とは何を指しているんでしょうか?

何かトンチンカンな思い違いで、基本的な事が分からなくなってる気もするのですが…。
0104デフォルトの名無しさん
垢版 |
2012/11/05(月) 08:18:54.46
move対象のデータがnon-temporalである(つまり、次々に別のデータを
処理していくストリーミング型である。だからキャッシュに入れても
意味ないのでやめてね)というヒント、じゃないのかな?
0107デフォルトの名無しさん
垢版 |
2012/11/06(火) 17:15:20.34
PGM STRT
LD GR5,DD
LAD GR1,3
LD GR6,DD,GR1
ADDA GR5,GR6
ST GR5,EE
RET
DD DC 5,6,7,8
EE DS 1
END

レジスタGR5の値(10進数)
レジスタGR1の値(10進数)
レジスタGR6の値(10進数
レジスタGR5の値(10進数)

を教えてください。
0109デフォルトの名無しさん
垢版 |
2012/11/06(火) 22:30:04.17
順番に読めよ・・・
単純にデータを読んで足して入れてるだけだ。まず自分の考えを書いてみな

それで間違ってるようなら、どこが、どのようにを教える気にもなる
0110デフォルトの名無しさん
垢版 |
2012/11/08(木) 03:29:29.25
>>107
caslか。。。
LD命令とLAD命令の違い、指標レジスタの使い方とか大丈夫なのかな。
テキストある?
0111デフォルトの名無しさん
垢版 |
2012/11/08(木) 04:37:42.31
レジスタGR5の値(10進数) 5
レジスタGR1の値(10進数) 3
レジスタGR6の値(10進数) 8
レジスタGR5の値(10進数) 13 じゃね?
0116デフォルトの名無しさん
垢版 |
2012/12/05(水) 01:32:12.27
movzbq (%rax,%rcx,8),%rax
()の中を、どう読んだらいいのか、わからない、教えてちょ
gdbの逆汗ですです
0117デフォルトの名無しさん
垢版 |
2012/12/05(水) 01:40:30.35
>>116
>movzbq (%rax,%rcx,8),%rax
>()の中を、どう読んだらいいのか、わからない、教えてちょ

「パーセントアールエーエックスカンマパーセントアールシーエックスカンマはち」
0120デフォルトの名無しさん
垢版 |
2012/12/08(土) 02:24:08.56
どもども
謎なx86な環境の謎なjitを動かそうとしてハマりまくってたけど、なんとか動いたよ
0124デフォルトの名無しさん
垢版 |
2012/12/08(土) 14:09:20.53
>>116さんので気になって探してみたけど、gdbの使い方はたくさん出てくるのに
逆アセンブラ出力の記法の説明は特に見当たらなかった。

なので、デフォルトの設定でgasと同じかなと思ったんだけど。。。
0125デフォルトの名無しさん
垢版 |
2012/12/08(土) 14:29:39.98
x86の16bit汗はよくやってったんだけど
32bit以降は久しぶりで、まさか、汗の解釈が出来なくてハマったという
オチでした(中で何やってるかわからず、当てずっぽうだから余計)
C系の逆汗はたまに覗くぐらいだったからね
セグホしまくりのコケまくりでなかなか先に進めなかった
ここの解説に助けられました
ttp://www.mztn.org/lxasm64/amd05.html
0126デフォルトの名無しさん
垢版 |
2013/01/05(土) 18:11:23.41
どなたか知者にお願いします、C言語系列(派生言語、類似言語)以外で

インラインアセンブラを表記できる高級言語には何があるか教えてくれませんか?
0128デフォルトの名無しさん
垢版 |
2013/01/05(土) 19:05:38.14
「インラインアセンブラ」「言語」でぐぐるだけでもいくつか見つかるんだが。。。
0129デフォルトの名無しさん
垢版 |
2013/01/05(土) 20:48:23.89
ネイティブバイナリ生成できる言語なら何かしらの手段が用意されとると思うが

昔のTurbo Pascalみたいにバイナリ直で書けなんてこともあったりして
0130デフォルトの名無しさん
垢版 |
2013/01/05(土) 21:03:43.11
CでもANSI以前にはasmが予約語だったってだけでインラインアセンブラの実装は
処理系依存だし、その他の言語でも処理系に拠るのは同様だろう。
0132デフォルトの名無しさん
垢版 |
2013/01/05(土) 21:20:56.47
そんなこと言うとそこで話が終わっちゃうけど、

・実はこんな言語でインラインアセンブラにはまってるところ
・このあたりが最近ホットだよ

などと答えれば話が盛り上がるし、思わぬ発見にも出会えようかと言うもの
0133デフォルトの名無しさん
垢版 |
2013/01/05(土) 21:29:05.22
インラインアセンブラなんてほぼ横着の方法だしなあ、盛り上がるような話題ではないと思う。
0135デフォルトの名無しさん
垢版 |
2013/01/08(火) 12:02:37.21
的外れな回答するなら無視しろよwww
>>131
ググル程度では使えるかは>>129が言っている話となんの違いもない。
言語仕様として実装しているかとか考えられないなら黙っていろよww
0136デフォルトの名無しさん
垢版 |
2013/01/08(火) 12:05:07.10
>>135
>言語仕様として実装しているかとか考えられないなら黙っていろよww

聞きたい内容なら相談者が明記すべきでしょ
0138デフォルトの名無しさん
垢版 |
2013/01/08(火) 15:38:51.07
>>126
>どなたか知者にお願いします、C言語系列(派生言語、類似言語)以外で
>
>インラインアセンブラを表記できる高級言語には何があるか教えてくれませんか?

学校の宿題?
0140デフォルトの名無しさん
垢版 |
2013/01/16(水) 05:12:57.75
インラインアセンブラが必要なことがある高級言語を探すほうが難しいような、C系以外で
0141デフォルトの名無しさん
垢版 |
2013/01/16(水) 05:23:30.13
ネイティブコード吐く手続き型言語ならインラインアセンブラの機能ぐらいあっても不思議はないだろ。
0148デフォルトの名無しさん
垢版 |
2014/01/11(土) 04:40:19.77
インラインアセンブラと聞いただけでこれほど荒れるって、
どんだけキチガイがたくさんいるの?w
0153デフォルトの名無しさん
垢版 |
2014/02/24(月) 19:27:58.02
おすすめ書籍とかサイトなど御座いますか?
0155デフォルトの名無しさん
垢版 |
2014/04/14(月) 09:26:43.43ID:UaoAtYI0
>>33
それをOSのスケジューラやVMが管理しているとしても
最終的にはCPUに何らかの命令が下って切り替わるわけだろ
0157デフォルトの名無しさん
垢版 |
2014/04/24(木) 20:23:29.80ID:6eU9esML
日本語アセンブラは、誰も作らないね。
0159デフォルトの名無しさん
垢版 |
2014/04/27(日) 08:31:04.45ID:zK6QyGSs
; こんな感じか?

スタート:
    コピー dl,データ1
    加算 dl,データ2
    加算 dl,'0'

;日本語にすると、ド偉く開発効率が下がりそうなのはなぜ?
;母国語でわかりやすいはずなのに。
0162デフォルトの名無しさん
垢版 |
2014/04/27(日) 13:03:08.45ID:tMnP8Ntb
アセンブラなら横にクソ長くなることはないから
IDEが領域分けて日本語名を表示してくれるだけでいい気がする
0163デフォルトの名無しさん
垢版 |
2014/04/27(日) 13:16:43.49ID:3jdeqCLN
>アセンブラなら横にクソ長くなることはないから

1行にマルチステートメントで複数命令を記述できるアセンブラもあるし、
同時に動作する複数のバスの動作を1行に記述するのが前提のもあるし、色々だよ。
0164,,・´∀`・,,)っ-○○○
垢版 |
2014/04/27(日) 14:17:19.42ID:KmoJaXUX
プリプロセッサマクロでレジスタにCみたいな変数名をつけたり
ループや条件分岐の構造をわかりやすくする為にインデント使う
こともあるから、長さに関してはそこまで変わらない。

AVX以降多いよね、Cで書かせる気ねーだろってくらい長い名前の
組み込み関数とか
0165デフォルトの名無しさん
垢版 |
2014/04/27(日) 19:42:17.93ID:SzXvbhKQ
まずカナ入力の練習からだな
ていうか、命令はひらがな中心で行くべき
特に使用頻度の高そうなものは
0166,,・´∀`・,,)っ-○○○
垢版 |
2014/04/29(火) 00:44:32.64ID:npAIF076
自分でNASMなりYASMなりのプリプロセッサ書いてみりゃいいんじゃねーの
grepとか使えば余裕だろ

AVX-512のマスクやSAE指定で使う{}はRubyの構文ならブロック扱いになるから
普通に使えるよなと思って「Xbyak on Rails(仮)」を書き始めて3時間で放り投げ
よく考えたらこんなもんいらねー
0168デフォルトの名無しさん
垢版 |
2014/04/29(火) 20:26:27.87ID:SKXPOdzO
>>166
> 自分でNASMなりYASMなりのプリプロセッサ書いてみりゃいいんじゃねーの
> grepとか使えば余裕だろ

grep?
0169,,・´∀`・,,)っ-○○○
垢版 |
2014/04/29(火) 20:30:54.99ID:npAIF076
スクリプト言語組み込みのgrep関数の意味ね
0170デフォルトの名無しさん
垢版 |
2014/08/15(金) 00:05:10.04ID:mDj9iSl8
HaswellのTSX命令にバグありでマイクロコードで無効にされるってマジかよ
しかもBroadwellの初期ステッピングまで響くかもしれないなんて言われてる
0171デフォルトの名無しさん
垢版 |
2014/08/15(金) 06:32:27.83ID:PlgCpoEN
Errata prompts Intel to disable TSX in Haswell, early Broadwell CPUs
ttp://techreport.com/news/26911/errata-prompts-intel-to-disable-tsx-in-haswell-early-broadwell-cpus

目玉の新機能がバグw
自動車だったらリコールだな
0174デフォルトの名無しさん
垢版 |
2014/10/24(金) 23:31:49.40ID:9fhBZmJB
MOV EAX,1234+5678 ←オペランド
 ↑  ↑   ↑
 ニ   オ   オ
 モ   ペ   ペ
 ニ   ラ   レ
 ッ   ン   |
 ク   ド   タ
0175デフォルトの名無しさん
垢版 |
2014/10/24(金) 23:52:02.58ID:60xLGkt4
おいおい、"EAX" も "1234+5678" もオペランドだろう、オペレータはまずかったなオペコードというべきだったか‥
0176デフォルトの名無しさん
垢版 |
2014/10/25(土) 00:09:13.63ID:zlhvJX1z
>>175
  0: a1 00 1b 00 00 MOV EAX,1234+5678 ←オペランド
  ↑      ↑   ↑  ↑   ↑
  オ      オ    ニ   オ   オ
  フ      ペ    モ   ペ   ペ
  セ      コ    ニ   ラ   レ
   ッ      |    ッ   ン   |
   ト       ド    ク   ド   タ
0178デフォルトの名無しさん
垢版 |
2014/10/25(土) 05:39:41.70ID:OBw5xvhC
馬鹿には無理
0179デフォルトの名無しさん
垢版 |
2014/10/25(土) 18:11:01.93ID:gl6O+QH9
>>177
その"+"はアセンブラがアセンブル時に演算するものであり、ターゲットのCPUが演算するわけではないのだから、オペレータとはいわないね‥
"1234+5678" 全体で一つのオペランドだ
0183デフォルトの名無しさん
垢版 |
2014/10/26(日) 13:19:22.74ID:gMYGq5V7
レジスタも実際はオペコードに含まれてるケースも多いので
EAX がオペランドになってるのは違和感がある
0184デフォルトの名無しさん
垢版 |
2014/10/26(日) 15:59:27.98ID:hUa4ZeCn
>>182
> 157 デフォルトの名無しさん:2014/04/24(木) 20:23:29.80 ID:6eU9esML
> 日本語アセンブラは、誰も作らないね。

> 173 デフォルトの名無しさん [sage]:2014/10/24(金) 23:21:06.42 ID:60xLGkt4
> >>157
> 名前(オペランド)だけでいい、オペレータまで日本語化する必要はない

という話の流れだからアセンブラの話で合ってるよ。
0185デフォルトの名無しさん
垢版 |
2014/10/26(日) 16:01:08.50ID:hUa4ZeCn
>>183
> レジスタも実際はオペコードに含まれてるケースも多いので

ちょっと何言ってんのか分からんからネットで確認できる実例挙げてよ。
0188デフォルトの名無しさん
垢版 |
2014/10/26(日) 18:05:55.37ID:eAcs35DC
ああ、x86のオペランドがAX固定の命令みたいな奴のことを指してるのかな。
そのへんは命令のネーミングの問題という感じもあって、(仮に名づけるなら)
ADDAXとかMOVAXみたいな名前の別の命令にしちゃったりすることもあるので、
まぁあまり厳密に定義はできないから、議論する意味はあまりないね。
0189デフォルトの名無しさん
垢版 |
2014/10/27(月) 06:34:42.02ID:Yycbgmpy
例えばMC6800のLDAAとかADDBみたいなののこと?
あれはニモニックの一部にレジスタ名が含まれてるだけでオペランドとは違うよ。
0191デフォルトの名無しさん
垢版 |
2014/10/27(月) 12:12:42.89ID:VoSGhOqg
x86で、アセンブリ言語では「ADD AX, 1」の「ADD」はオペコード(インストラクション、命令)、
AXと1はオペランド(引数)というように明確に分離できる。

機械語では 0x05 0x0001 となるが、ここでADDを意味する部分とAXを意味する部分は
0x05に一緒に入ってしまっていて分離できない(正確には5のLSBでALとAXのどちらかを
選択しているけど)。

結論としては、オペランド(の1部)がハードコードされた命令という奴があるので、
オペコードとオペランドの区切りはかならずしも明確ではない、ということになる。
0193デフォルトの名無しさん
垢版 |
2014/11/29(土) 14:11:28.92ID:m0w/xFX/
>>191
極少数の命令だけだけどオペコードのバイトにregフィールドがある命令があるな
通常はオペランドはr/mバイトにあってオペコードとオペランドは完全に分離できるけど
0194デフォルトの名無しさん
垢版 |
2014/11/29(土) 15:58:54.98ID:FcCIdxC+
アセンブラとマシン語が混ざって元々意味の無い話がやっぱり意味の無い話で回ってるね

更に遡ってくと元は日本語アセンブラか。。。本当バカ臭い
0195デフォルトの名無しさん
垢版 |
2015/02/15(日) 17:06:10.18ID:eXfPDQZo
基本情報技術者試験でアセンブラ勉強しはじめた。
午後の選択問題で、アセンブラが簡単だと聞いたが…。
いまのところわけわからん。
0196デフォルトの名無しさん
垢版 |
2015/02/15(日) 17:24:08.94ID:1vS2ESBG
https://www.jitec.ipa.go.jp/1_13download/shiken_yougo_ver2_2.pdf
>3.プログラム言語
>@ 基本情報技術者試験において,ソフトウェア開発分野に関する試験問題に出題するプログラム
>言語は,C,COBOL,Java,アセンブラ言語(CASLU)の 4 言語とする

CASLなんて役に立たないもの勉強なんてしないで普段使ってるものか将来使いそうなの勉強したほう
いいんじゃない

# FORTRANて今ないんだなー
0200デフォルトの名無しさん
垢版 |
2015/03/08(日) 09:27:59.15ID:/MgTL3zQ
センター試験とか簡単なことを難しそうに見せて
というか問題(の意図)を判り難くして回り道させて
出題者側が時間稼ぎしてる感じしかしない
0202デフォルトの名無しさん
垢版 |
2015/04/21(火) 16:40:55.21ID:3mVW08s5
gccの-Sオプションでアセンブラファイルを作成したら日本語文字列が
.ascii "%d\202\252\223\374\227\315\202\263\202\352\202\334\202\265\202\275\12\0"
みたいになったんですがこれは何でしょうか
ascii 日本語で検索しても出て来ません
0203デフォルトの名無しさん
垢版 |
2015/04/21(火) 17:06:23.70ID:hJeBiy6y
>>202
「が入力されました」をShift_JISでエンコードして各バイトがASCII範囲外なので8進表記したもの
0209デフォルトの名無しさん
垢版 |
2016/07/01(金) 15:31:07.82ID:EjQpOL5h
@
add dword ptr[i], 1

A
mov eax, dword ptr[i]
add eax, 1
mov dword ptr[i], eax

ってどう違いますか?

i++を逆アセするとAになりますが
インアセンブラで@と書いても一見同じようですが
3倍の速度ってわけではないですよね
0210デフォルトの名無しさん
垢版 |
2016/07/01(金) 15:39:37.74ID:r+VXjd7G
コンパイラが2のようなコードを吐くのは、そっちの方がトータルで速いから

デコーダだの複雑命令だの
並列実行だのoooだの
パイプラインだのマイクロ命令だの
そういうのが理由


端的に言えば、1の命令は複雑すぎるので
分解して複数命令にして実行したり使えるデコーダが限られたり、制限が多い
2は、比較的CPUの内部命令に近いので、他の命令と同時並列に実行したり出来る
0212デフォルトの名無しさん
垢版 |
2016/07/02(土) 02:29:37.38ID:YYGT6hvg
>>209
多分だけど
レイテンシは同じだが前者はポート掴みっぱなしで他の命令を動かせない
後者は分けるから他の命令を動かしやすい

>>211
多分、Pentium 4時代はaddの方がuOPとスループットが有利だったから
0213デフォルトの名無しさん
垢版 |
2016/07/02(土) 03:34:14.20ID:m5Sb4+fO
レイテンシがどうのとかそういうレベルの話じゃなくて
単純にVC++のデバッグビルドだからじゃねーの
0215デフォルトの名無しさん
垢版 |
2016/07/09(土) 00:41:22.05ID:2eBD2sS9
CPUをFPGAで実装してみたらわかると思うけど
一つの命令の中でメモリをリードした後ライトする命令をサポートするISAと
そういう命令は持たないで一つの命令の中ではメモリはリードするだけかライトするだけのISAでは実装の複雑度はかなり違うよ
0216デフォルトの名無しさん
垢版 |
2016/07/09(土) 00:52:38.73ID:2eBD2sS9
もちろん排他制御のためにどんなISAでもtest and set的な命令は持つ必要があるけど
主眼は使用頻度が高い演算とか操作の話だからね
0217デフォルトの名無しさん
垢版 |
2016/07/09(土) 12:51:47.63ID:7UqK6Tzf
確かにmemory to memoryのオペレーションはRISCだと命令長が合わないから無理だよね。
無理やりやるならレジスタAのアドレスをロードしてincしてストアするとかになるから命令が複雑すぎるかもな。
0219デフォルトの名無しさん
垢版 |
2016/07/09(土) 20:01:55.81ID:xdnyrY55
レジスタに書くとメモリに転送されんの?知らんかった。
命令のサイクルとかむちゃくちゃになりそうだな。CPUのコアじゃなくて、SOCとかで勝手に拡張した擬似レジスタなのかな。
0221名無しさん@そうだ選挙に行こう! Go to vote!
垢版 |
2016/07/10(日) 12:42:16.29ID:BKklAOmg
6502はそういうレジスタないよ。アドレッシングが癖があるけど。
ちょうど今FPGAで6502組んでるとこなんだよね。
0222名無しさん@そうだ選挙に行こう! Go to vote!
垢版 |
2016/07/10(日) 19:39:37.06ID:EY1v+Nkp
6809かな
0223デフォルトの名無しさん
垢版 |
2016/07/10(日) 20:11:16.85ID:BKklAOmg
サンクス!
昔のCPU好きなんだよね。調べて見よっと
0225デフォルトの名無しさん
垢版 |
2016/07/10(日) 22:09:22.43ID:BKklAOmg
なんかいっぱい出てきたな。。。
見てみるよ。あざす
0226デフォルトの名無しさん
垢版 |
2016/08/05(金) 16:24:48.98ID:VZHGn81X
話の流れをぶった切って申し訳ないんだが、
armv8のインラインアセンブラとかの質問をここでしてもいい?
0229デフォルトの名無しさん
垢版 |
2016/08/25(木) 23:40:32.30ID:Eq6gD2XE
新しく出てたプログラム本を何気なく手にとって読んでみたらアセンブリ言語中心の内容だったな
タイトル忘れた
0232デフォルトの名無しさん
垢版 |
2016/08/26(金) 21:36:42.60ID:NyhYMJrx
命令長が違うだけで32ビットのニーモニックとあんま変わらんよ。
入門書読みたけりゃ32ビットので勉強して、リファレンスマニュアルを探せばいいと思う。
64ビットの固有の命令とかコントロールレジスタの事なんかは入門書では書く必用ないしね。
0233デフォルトの名無しさん
垢版 |
2016/08/27(土) 05:42:44.15ID:Dx6e3moq
プログラムの不思議を解く―実力派プログラマのための教養としてのアセンブラ入門
0234デフォルトの名無しさん
垢版 |
2016/08/27(土) 08:42:35.36ID:SmFG8gRK
      ク    ク || プ  //
      ス  ク ス  | | │ //
       / ス    | | ッ //   ク   ク  ||. プ  //
       /         //   ス ク ス _ | | │ //
         / ̄ ̄\     /  ス   ─ | | ッ //
       /  _ノ  .\     /         //
       |  ( >)(<)       ___
.        |  ⌒(__人__)     ./ ⌒  ⌒\
        |    ` Y⌒l    /  (>) (<)\
.         |    . 人__ ヽ /  ::::::⌒(__人__)⌒ \
        ヽ         }| | |        ` Y⌒ l__   |
         ヽ    ノ、| | \       人_ ヽ /
.         /^l       / /   ,─l       ヽ \
0238デフォルトの名無しさん
垢版 |
2016/11/12(土) 13:36:24.90ID:5D/kJ823
「ほら吹き男爵の本を5冊調べました(中略)
ブーツの紐を引っ張って湖の底から脱出する
という話は、書かれていません(中略)
ブートストラップ(bootstrap)とは直訳すれば、ブーツのひもである。しかし、
独力でやるという派生した意味を持ち、そこから、
コンピュータが電源投入時に自動的にOSを読み込む方式を指したり、
コンパイラが自分自身を記述したりすることを指したり(中略)
bootstrapを靴紐とした誤訳である。
Bootstrapとはブーツを履くときにブーツを引っ張る上げるためのつまみ革
ブートストラップを引っ張って湖の底から脱出する
というエピソードは書かれていない。しかし類似の話として
馬ごと沼に落ちた Munchausen が手で自分の髪の毛をつかんで自分自身と馬とを引っ張り上げて沼から脱出する
というエピソ−ドが書かれている(挿絵つき)。岩波文庫版」

http://suzuki-tokuhisa.com/ushigome/hinoue.html
2000/12/24(Sun)
0241デフォルトの名無しさん
垢版 |
2017/04/13(木) 18:15:02.80ID:VLmLig3K
test
0242デフォルトの名無しさん
垢版 |
2017/06/06(火) 19:25:33.15ID:6Hy4ZEQ3
FreeBSDi386
バックスペースの挙動の再現?方法が知りたいのですが

ioctlにてBSが無効化?している状態においてどのようにすればいいのでしょうか?

現状の挙動は
BSだけだとカーソル左移動のみ
エスケープシーケンスの"[[P"併用では似た挙動はするがコンソール左端を認識しない為 左端以降右を削除してしまう
0245デフォルトの名無しさん
垢版 |
2017/06/06(火) 22:48:42.93ID:6Hy4ZEQ3
243
無効化(terminal自体の設定変更 Cでいう?termiosで変更)してるのでそれでは駄目です
0246デフォルトの名無しさん
垢版 |
2017/06/06(火) 22:58:03.59ID:6Hy4ZEQ3
因みにその場合の(243の)挙動は
カーソル移動と削除(スペースの入力と表示)のみ行われてカーソル右はそのままとなります

ABCD

A D

のようにカーソル右の文字が左スクロールしません
0249デフォルトの名無しさん
垢版 |
2017/06/07(水) 20:25:58.07ID:izePe9Zb
247
意味不明
248
意味不明

次の方どうぞ〜
0252デフォルトの名無しさん
垢版 |
2017/07/19(水) 09:29:19.34ID:4WYjcaP8
>>196
アセンブラでアルゴリズム書くノウハウは身に付くよ。
64bitアセンブラでHello Worldしか書けないんじゃ悲し過ぎる。
レジスタ名やニーモニックが違うだけで方言みたいなものだから応用は効く。

CASLは命令数少ないから、擬似命令含めても覚える文法?は一番少ない。
OS作りたいとかなら必須だしね。
そこまで大掛かりじゃなくても、電子工作ではアセンブラで書いた方がマイコン使いこなしてるぜ!って感覚が好き。
(むしろBIOSすらないから、直接VRAM書き込みとかはこっちのが主流)
0253デフォルトの名無しさん
垢版 |
2017/07/19(水) 11:26:20.41ID:+fK80sDM
>>252
CASLってoutputがわかりにくいんだよね
VRAMとか定義されてたっけ
0254デフォルトの名無しさん
垢版 |
2017/07/19(水) 14:03:51.87ID:4WYjcaP8
>>253
VRAMは実際のマイコンでも定義されてない。
CPUは書き込んだ先がただのメモリかVRAMか感知しない。
人間が実装し、CPUが認識するメモリのどこからVRAMとして扱うか決める。
OUTPUTが分かりにくいってのは実際にPICマイコンとかで電子工作してプログラム書き込んだことがないからだと思う。
(むしろOUTマクロで文字列表示出来るだけマシだと思う)

だってPCと違ってマイコンチップにはディスプレイとか無い。
CPUはメモリやポートに値や信号を出す出さない。読む書く、読まない書かない。
それしか外部に出来ない。
何をどう表示するか、どう動くかは実装と取り決め次第。

PCは複雑過ぎる(し、ある程度入出力の手段は決まってる)から、OUTマクロみたいなのをBIOSや各OSのシステムコールが提供してるに過ぎない。
0258デフォルトの名無しさん
垢版 |
2017/07/28(金) 12:37:51.02ID:WViVOgsq
Cが使えるなら、
普通にPCのx86のコードの中から、
単純なループをアセンブラ化することからはじめれば
0259デフォルトの名無しさん
垢版 |
2017/07/28(金) 14:39:46.04ID:JFFpAseU
>>257
今、アセンブラやるならx86_64かARM64だな
x86_64ならLinux上でやるとDOSの頃のようなシステムコールを直接アセンブラから呼ぶようなプログラミングができる
C言語のコンパイルでアセンブラ出力をして関数の中身を書き換えてみるとかでもいい
gccなら-Sオプションを付けることでアセンブラ出力ができる
こんな感じでアセンブラ出力して、コンパイルできる
(最適化オプションを指定しないとかなり冗長なコードを出力するので適当に-O1、-O2、-O3などを使った方がいい)
gcc -S -o hogehoge.s hogehoge.c
as -a=hogehoge.lst -o hogehoge.o hogehoge.s
gcc -o hogehoge hogehoge.o
最適化オプションを使う場合
gcc -S -O2 -o hogehoge.s hogehoge.c
as -a=hogehoge.lst -o hogehoge.o hogehoge.s
gcc -o hogehoge hogehoge.o

ARM64ならPINE64買って同じようにLinuxやるか、
AndroidSDK入れてAndroidアプリの作成でJavaからJNIでC/C++を呼び出して
そのC/C++の中でインラインアセンブル組むといい

Linux で64bitアセンブリプログラミング
http://www.mztn.org/lxasm64/amd00.html

Linux で Arm64 アセンブリプログラミング
http://www.mztn.org/dragon/arm6400idx.html
0260デフォルトの名無しさん
垢版 |
2017/07/28(金) 14:55:01.62ID:JFFpAseU
あと、ARM64のアセンブラを遅くてもいいからx86_64のUbuntuでやりたい場合
QEMUをインストールし、ARM64のクロスコンパイラを入れることで
ARM64のクロス開発とエミュレーション環境が構築できる
sudo apt-get install qemu
sudo apt-get install g++-aarch64-linux-gnu
sudo ln -s /usr/aarch64-linux-gnu/lib/ld-linux-aarch64.so.1 /lib
sudo ln -s /usr/aarch64-linux-gnu/lib /lib/aarch64-linux-gnu

これでARM64のプログラムをx86_64のプログラムと同じように実行できるようになる
(あくまでエミュレーションなので動作は遅い)
コンパイル方法は
aarch64-linux-gnu-gcc -o hogehoge hogehoge.c
アセンブラ出力してコンパイルするなら
aarch64-linux-gnu-gcc -S -o hogehoge.s hogehoge.c
aarch64-linux-gnu-as -a=hogehoge.lst -o hogehoge.o hogehoge.s
aarch64-linux-gnu-gcc -o hogehoge hogehoge.o

実行はx86_64のプログラムと同じように実行できる
./hogehoge
明示的にQEMUを呼び出して実行時のCPUを指定して実行したりできる
qemu-aarch64 -cpu cortex-a57 hogehoge
指定できるCPUの種類を調べるには
qemu-aarch64 -cpu help

どのARM64のバイナリかどうかを調べるには
file hogehoge
で確認できる
0263デフォルトの名無しさん
垢版 |
2017/07/28(金) 16:17:43.90ID:WViVOgsq
システムコールの勉強なんて今時いらんでしょ

VisualStudioなら既にインストールされてそうだし、
アセンブラソースをプロジェクトに加えるなので楽
0264デフォルトの名無しさん
垢版 |
2017/07/28(金) 18:28:29.67ID:2hIYBPjn
>>257
上のx86_64アセンブラ勧めてるのは慣れてる人だから、自分が慣れて来たら参考にしても良いけど、ネットでもHello worldで終わってるコードばっかりとだけ言っておこう。

そう言う意味じゃ、自分でx86_64アセンブラの命令一覧を参考にコード書くためにも、CASLでアセンブラに慣れてみた方がいい。

PC向けはシステムコールじゃないと文字も出力出来ないので、VRAM直接弄りたいならGBやGBAなどのゲーム機や組み込み、電子工作のアセンブラコードのが面白い。
0265デフォルトの名無しさん
垢版 |
2017/07/28(金) 19:47:53.52ID:JFFpAseU
CASLじゃ、全然参考にならない
実際に使われてるものを使って勉強した方が良い
本屋でx86またはx86_64関係のアセンブラの本をいろいろ物色してみるのがいいかもね
ARMやARM64関連のアセンブラの本はあまり出てないからね
0266デフォルトの名無しさん
垢版 |
2017/07/28(金) 20:03:16.15ID:SfCHZxYK
>>265
64ビットOSでx86アセンブラの16ビットコード動かないじゃん?
仮想PCにFreeDOSでも入れればいいんだろうけど。

それにシステムコールの使い方ばっかで、意外とソートとかそう言うコード無いんよね。
だから最初はCASL勧めてる。
その後はx86なりx86_64なりARMなりお好きにどうぞ。
0268デフォルトの名無しさん
垢版 |
2017/07/28(金) 20:15:58.51ID:WViVOgsq
ARMが目的ならARMで
MIPSが目的ならMIPSで
PICが目的ならPICで
RXが目的ならRXで

命令自体はMIPSが良いとは思うけど
わざわざ回り道するほどではない
0269デフォルトの名無しさん
垢版 |
2017/07/28(金) 20:58:17.26ID:SfCHZxYK
下記URL参照だが、この意見に賛同。
x86は入門向けとは言い難い。
そもそもWinだと結局WinAPIより下の階層触れないからCで書くのとほとんど変わらない。
どうしてもx86_64ならLinuxがまだマシ。
オススメはGBAのARM32ビットCPUのアセンブラ。
ハードの仕様固定だから、直でVRAM弄れて楽しい。
PCはBIOSやOSが有るから、この辺楽しめない。

CASL IIはプログラマ視点で低水準な世界の雰囲気を味わう分には手軽な言語ではないかと思う。
本来は実機と本物のアセンブラを使うべきなんだろうけど、ちょっとしたボードであっても実際に動かすには色々な手順*4が必要で
面倒だし*5、普及しているアーキテクチャが入門向けとも限らない*6。低水準の世界にどっぷり浸かる必要があるならそういった現実ならではの汚い部分に向き合わなくてはならないけど、
そうでないならCASL IIの箱庭ぐらいが丁度良いのではないだろうか?

もっとも極めても直接的に役に立つことはない言語だという点は留意しておくべきだけど。

http://d.hatena.ne.jp/eel3/touch/20120109/1326110720
0270デフォルトの名無しさん
垢版 |
2017/07/28(金) 21:15:04.59ID:JFFpAseU
アセンブラの勉強のためならマイコンとかゲーム機とかでしなくても
JavaならビットマップにBufferedImage使えば
BufferedImageクラスに画面の内容をgetRGBというint型の配列として読み込むメソッドがあるので
これで読み取った内容をjniでC言語に渡して、
C言語からアセンブラに渡すか、インラインアセンブラでこの画像の処理をする部分を書いて
Javaに返してBufferedImageの画面の内容を書き換えれば(int型の配列を書き戻すのはsetRGB)
AndroidだとbitmapクラスにgetPixelsとsetPixelsがあって同様のことができる
(AndroidだとARMがメインになる)
これでVRAMをいじるのと同じことができる
javaとC言語ができるならJavaからCを呼び出すjniだって出来るんだろうし

アセンブラだからといって低レベルの部分にどっぷり浸かる必要はない
低レベルの部分にどっぷり浸かりたいならマイコンやればいいだけ
工業高校や専門学校ではそういう授業には8bitのPICやAVRなどのマイコンを使ってる
32bitマイコンだとアセンブラというよりもC言語がメインになるな
0271デフォルトの名無しさん
垢版 |
2017/07/28(金) 21:19:45.51ID:SfCHZxYK
もうそれ、アセンブラそのものの否定に片足突っ込んでるよね?
ぶっちゃけ高級言語からアセンブラ呼ぶ意義はSIMD命令使う以外は無いと思う。
アセンブラ好きの行き着く先はマイコンよ。
0272デフォルトの名無しさん
垢版 |
2017/07/28(金) 21:32:28.65ID:JFFpAseU
マイコンでもC言語をメインに使うのは同じ
Cでは書けないもしくは遅くなる部分でアセンブラを使うだけ
0274デフォルトの名無しさん
垢版 |
2017/07/28(金) 21:52:56.42ID:d5LZ2kks
>>271
いろんなアセンブラ好きがいる

SIMDや特殊命令でパフォーマンスを追求する人
アセンブラでのOSやシステム設計をする人
オールアセンブラでマイコンのプログラムを書く人
ハッキングに使う人
コンパクトなコードを極める人

アセンブラを作る人
命令セットを作る人
マイコンを作る人
0276デフォルトの名無しさん
垢版 |
2017/07/28(金) 22:12:41.88ID:d5LZ2kks
普通の人ならVisualStudioでx86を動かすのが環境的には一番楽

プロジェクトを作成して、
メニューから [プロジェクト] ===> [ビルドのカスタマイズ] ===> masm をチェックして[OK]

あとは、*.cpp と *.asm のファイルを作ってコードを書けばビルド、実行、デバッグが可能

以下が64bitコードの例
---- cpp ----
#include <iostream>
extern "C" int func(int a, int b);
int main(){
std::cout << func(2,3) << "\n";
return 0;
}
---- asm ----
.code
func proc
mov eax, ecx
add eax, edx
ret
func endp
end
----
0277デフォルトの名無しさん
垢版 |
2017/07/28(金) 22:31:53.29ID:d5LZ2kks
画像データ、音声データ、その他データの準備や結果の保存はC/C++でやって、
アセンブラは、実際の処理部分だけでいい。
AVX, AVX2, FMA3もVisualStudio2017なら対応してるし、
AVX512も次のアップデートで使えるようになる
PC上のコードの高速化が目的であればこの方法

そうじゃなくて、アセンブラで上から下まですべて記述してみたい
というのであれば、小型のマイコンで
たとえば、以下があればLEDを点灯させて遊ぶことが出来る
開発ツールは無料
http://akizukidenshi.com/catalog/g/gI-11886/
http://akizukidenshi.com/catalog/g/gM-03608/
http://akizukidenshi.com/catalog/g/gP-09257/
http://akizukidenshi.com/catalog/g/gC-05159/
http://akizukidenshi.com/catalog/g/gP-00288/
http://akizukidenshi.com/catalog/g/gI-02082/
http://akizukidenshi.com/catalog/g/gR-16102/
0278デフォルトの名無しさん
垢版 |
2017/07/28(金) 22:52:22.19ID:MUY2be1G
>>275
普通に、printf("%s", "%d\202\252\223\374\227\315\202\263\202\352\202\334\202\265\202\275\12\0");
を実行すればいいだけだろ?
0279デフォルトの名無しさん
垢版 |
2017/07/29(土) 07:25:47.22ID:XkzNePZu
>>273
JavaとCができると書かれててグラフィックの話が出ててきてたからね
Javaならグラフィックスを扱うのも楽だから。
JavaのJNIはJavaからC/C++を呼び出せて
その呼び出されたC/C++のプログラムからJavaの関数を呼び出せたりする
だからJavaのAPIをC/C++から叩ける
そのC/C++の中でインラインアセンブラを使ったり、そのC/C++の関数をアセンブラから叩けばいいからね
C#ができる人ならC++でDLL作成してC#から呼び出せば同じことだけど
0283デフォルトの名無しさん
垢版 |
2017/07/29(土) 07:40:53.88ID:MyKDeSRq
>>279
楽とかじゃなくて、直接弄れるのが大事なんだが。。。
0287デフォルトの名無しさん
垢版 |
2017/08/04(金) 03:46:13.76ID:kIgI5e6Z
あげとくかな
0293デフォルトの名無しさん
垢版 |
2017/08/16(水) 13:44:14.31ID:1QMAod07
AndroidやiPhoneであれだけ64bitのARMが普及してるのに
64bitのARMの命令セットの解説書がほとんどないのがね
今からやるなら64bitのARMもオススメ

CPUの入門書であるComputer Organization and Design(日本語では「コンピュータの構成と設計」という題名)
は今までMIPSだけだったが洋書ではMIPS版の他に64bitのARM版も出てる
https://www.amazon.co.jp/dp/0128017333
0295デフォルトの名無しさん
垢版 |
2017/08/16(水) 13:50:52.61ID:1QMAod07
Computer Organization and DesignはあくまでCPUの基本を勉強するための本なので
別に買う必要はないよ
ただ、こういう有名な本でも64bitのARMが実例として採用されてるということ
0298デフォルトの名無しさん
垢版 |
2017/08/18(金) 00:52:05.51ID:stC/R/7K
>>296
RISCだとそんなもん。

アキュムレータマシンがロードストアモデル採用すると
効率がどうなるかっていう教育にはぴったりのゲームだね。
あと条件分岐の条件の否定が欲しすぎる。
0300デフォルトの名無しさん
垢版 |
2017/08/26(土) 10:08:01.01ID:ljYsXPF5
スクラッチみたいにGUIの部品並べたら
アセンブリが出来上がるソフトはないの?
0303デフォルトの名無しさん
垢版 |
2017/08/27(日) 08:53:51.24ID:LSSLdcGe
>>300
機械語に一対一対応のGUI部品作れば良いだけだけど、結局並べるのにハードの知識が要求されるっていう。。。
アセンブラを文字で入力するかマウスで入力するかの違いしかねえ。
入力の速さ考えたら文字のが早いっていうね。
0305デフォルトの名無しさん
垢版 |
2017/08/27(日) 10:11:28.92ID:LSSLdcGe
どっちもただのジャンプ命令だから、GUI部品にした所で分かりやすくなるとは思えないが。。。
ジャンプ先のラベルを分岐かループかで色分けすれば?
0307デフォルトの名無しさん
垢版 |
2017/08/27(日) 13:04:01.25ID:LSSLdcGe
その通りだが、機械語と一対一じゃなくなった時点でアセンブラではなくただの高級言語。
0308デフォルトの名無しさん
垢版 |
2017/08/27(日) 13:14:42.34ID:KKCBM/yI
アセンブラマクロというものがなかったか?

それと、歴史的に機械語→アセンブラ→構造化→高級言語って進んてるんだから
構造化してないようなものは高級言語には入らないだろ

低級とか高級とかはどれだけハードウェアに近いかとか人間に近いかとかだが、
それでもアセンブラマクロがあるからって高級言語にはならんと思うよ
0309デフォルトの名無しさん
垢版 |
2017/08/27(日) 13:36:32.53ID:LSSLdcGe
そりゃそうだ。
命令とマクロは違うし。
それでもマクロ使えるのは高級アセンブラとか言われてたな。
0310デフォルトの名無しさん
垢版 |
2017/08/27(日) 13:42:52.40ID:KKCBM/yI
それは「高級言語のアセンブラ」ではないんだが、
わかってるか?
0311デフォルトの名無しさん
垢版 |
2017/08/27(日) 13:56:13.37ID:LSSLdcGe
両方の意味で使われてた気がするがなぁ。
マクロが豊富で高級言語っぽく使えるって触れ込み。

高機能アセンブラとも、高級言語風アセンブラともとれる。
マクロ使うかどうかはその人次第だろうが。
0312デフォルトの名無しさん
垢版 |
2017/08/27(日) 13:59:32.69ID:KKCBM/yI
マクロや擬似命令がついてるからって、高級言語にはならない

いったいそのトンチンカンな知識はどこで習ったんだ?
0313デフォルトの名無しさん
垢版 |
2017/08/27(日) 14:15:34.89ID:LSSLdcGe
誰が高級言語になると書いたよ。
高級言語「風」だ。
それにアセンブラメーカーの宣伝文句をそのまま書いただけだ。
(リーフアセンブラだったっけ?大分昔買ったやつ)

機械語を吐くって意味じゃアセンブラも高級言語も同じ。
むしろアセンブラのが機械語と一対一だから単純。
ループや分岐みたいなよく使う機械語パターンを文法によって吐くのが高級言語ってだけ。
0314デフォルトの名無しさん
垢版 |
2017/08/27(日) 14:23:55.78ID:KKCBM/yI
>その通りだが、機械語と一対一じゃなくなった時点でアセンブラではなくただの高級言語。

>機械語と一対一じゃなくなった時点でアセンブラではなくただの高級言語。

>高級言語。
0316デフォルトの名無しさん
垢版 |
2017/08/27(日) 15:50:51.76ID:3R3KU0xo
構造化を高級言語の条件にしちゃったら BASIC が可哀想だよ。
ラベルを明示的に書かずに分岐やループを書ければいいのなら OPTASM でやったよ。ずいぶん昔だけど。
0317デフォルトの名無しさん
垢版 |
2017/08/27(日) 17:13:47.31ID:KKCBM/yI
ID代えてもバカさを隠せないなんて、
おれ、こんななの初めて見た

構造化を知らないからこそ、BASICがどうたらって話が出てくるんだろうな

そんなに知ったかぶりたいのか?
0318デフォルトの名無しさん
垢版 |
2017/08/27(日) 17:55:08.59ID:3R3KU0xo
何を言いたいのか知らないが、人違いだよ。
0322デフォルトの名無しさん
垢版 |
2017/08/27(日) 20:09:47.58ID:02V7/aD0
>>314
マクロは文法とは違って単純に命令の塊を置き換えたもの。
ライブラリや文法よりはCのマクロが近い。
高級言語の場合、その言語のライブラリだったりランタイムがある。
だからアセンブラの中でも高級アセンブラって言われたりもするが、高級言語とは違う。
ループや分岐をGUI部品でとなると、それはマクロではなく文法のGUI化で、それはもう高級言語。
0323デフォルトの名無しさん
垢版 |
2017/08/27(日) 20:27:15.96ID:02V7/aD0
自分で言ってて分かりにくいな。
アセンブラのマクロは機械語と一対一命令に変換出来るのはアセンブラが機械語と一対一だから当然として、高級言語は高級言語の文法が機械語に一対一対応では無いので変換出来ない。
この機械語と一対一に変換可能かどうかが低級か高級の分かれ目じゃ無いかと思う。

なのでマクロをGUI部品にするならループとかの文法的なのじゃなくて、命令の塊を入れるフォルダー的な物になるんじゃ無いかな。
引数付きフォルダー?
0324デフォルトの名無しさん
垢版 |
2017/08/27(日) 20:41:51.40ID:02V7/aD0
x低級か高級の分かれ目
o高級アセンブラか高級言語の分かれ目

ああ、でもCも高級アセンブラって言われることあるから、上げ足取りされそう。
0326316
垢版 |
2017/08/28(月) 06:09:23.24ID:DdfTeNHz
KKCBM/yI の言う「構造化」って何のことだったのかな。
何が気に障ったのか本当に解らないよ。
0329デフォルトの名無しさん
垢版 |
2017/08/28(月) 22:04:27.60ID:RdiCBSRu
μOpとか言ったら笑ってあげる。
0330デフォルトの名無しさん
垢版 |
2017/08/28(月) 22:30:39.97ID:Wq6HqE7w
同一命令に対して複数の表記があるのは普通だし、
逆にアセンブラでは(命令の形では)記述できないようなのもあったりもする
即値によって命令を自動で変えてしまうとか
特定のプレフィックスを指定できなかったり

アセンブラは決して一対一を目指してるわけではない
0332デフォルトの名無しさん
垢版 |
2017/08/29(火) 00:03:33.22ID:f2JWn62j
やっぱり、「。」つけてる例のバカはバカだったな
0333デフォルトの名無しさん
垢版 |
2017/08/29(火) 06:25:34.28ID:gQsqxoLN
最近のCPUって中はμOpなんだし
外にも公開してでプログラミング可能にすれば効率よくね?
0335デフォルトの名無しさん
垢版 |
2017/08/29(火) 06:55:33.84ID:H/OLcuRc
それがIA64(Itanium)だったけど、互換性の壁に敗れた。
それに現行だと変換後、直接実行か0次キャッシュからしか参照しないから将来どっちもメモリから受け付けるアーキテクチャ出すとかしないと意味はない。
あとμOpはAMD CPUと互換性ない。
0343デフォルトの名無しさん
垢版 |
2017/08/30(水) 22:05:42.68ID:LHMhk1GJ
>>341
知ってますよ〜。
高速化の過程でRISC風命令に変換するようになったんですよね?
だから、最初からRISC命令なIA64はμOpに対する最適化の集大成+α。
Intelが思ってたほどコンパイラの最適化が出来なくてVLIW(だったっけ?)が上手くいかなかったらしいけど。
(上手く出来るコンパイラ作るのが難し過ぎたらしい)

もっと安くしてモバイルや組み込みから攻めてたら、もう少しいけてたかもなと考えると勿体無かった。
0344デフォルトの名無しさん
垢版 |
2017/08/31(木) 02:00:28.55ID:Ce9FMcgb
コンパイラに頼ってたら長続きしないよ
命令互換でもCPUによって命令のスループットもレイテンシもuOPも違うんだから
0345デフォルトの名無しさん
垢版 |
2017/08/31(木) 02:02:30.36ID:Ce9FMcgb
x64はuOP変換前提だとそんなに悪くない
苦手な処理は新命令で補ったし
レジスタも増えたし
0349デフォルトの名無しさん
垢版 |
2017/09/01(金) 11:34:57.90ID:siO2MJpg
口だけじゃなくて、やねうらおみたいに実績で示して
あの人は自分で自分を天才って言ってるけどそれだけのことはしているからね
0354デフォルトの名無しさん
垢版 |
2017/10/15(日) 13:58:03.79ID:DMOHal5+
ちょっとお尋ねします
手続きカウンタの値により手続き順に処理を飛ばすプログラムを考えています
この時手続きカウンタの評価が先頭につきますが
このオーバーヘッドがいやなのでProgramCounterに次の処理の飛び先をロードしてjumpさせたいのですが

if 手続きカウンタ==1 jump 処理1:  
if 手続きカウンタ==2 jump 処理2:
      :
if 手続きカウンタ==n jump 処理n:  手続きnが多いとオーバーヘッドが無視できなくなる
  else 出口:

処理1: {  
   :
  jump_出口:
手続きカウンタ +=1 }             // ここをPCに代入するための飛び先番地に変更


処理n: { 
   :
手続きカウンタ=1(手続きカウンタ初期化) // ここをPCに代入するための処理1の飛び先番地に変更
jump_出口: }

出口:

通常のCPUのJUMP命令は直値のみでレジスタ間接は無いので変化球技で実現する必要があります
こんな変なことをやって居る方はおられますか? 又、どのように実現したのでしょうか? 
0355デフォルトの名無しさん
垢版 |
2017/10/15(日) 14:23:06.17ID:UA81qQu7
x86とかならjump [mem] やjump reg があるよ
場合によっては、スタックに戻り先とジャンプ先を積んでretしてもいい
0356デフォルトの名無しさん
垢版 |
2017/10/15(日) 14:58:16.97ID:DMOHal5+
pushしてretで問題なさそうなのかな?
0359デフォルトの名無しさん
垢版 |
2017/10/15(日) 16:10:57.55ID:DMOHal5+
わいの今使ってるCPUのニーモニックを目を皿のようにして探しているんだが
レジスタ間接ジャンプがないんやでえええ
見方が悪いのかもな 普通そんなことありえないか・・・そうだよな?
テーブルジャンプなんて普通に使うもんな
0361デフォルトの名無しさん
垢版 |
2017/10/16(月) 00:11:29.28ID:7Byc8Q4r
Cコンパイラがあるならswitchでコード書いてアセンブラソース吐かせろ
多分テーブルジャンプになるんじゃないかな
0363デフォルトの名無しさん
垢版 |
2017/10/16(月) 00:53:45.76ID:+2vhlmuF
本当にジャンプ位置をダイナミックに決められないのなら、
2分検索とかでいいし、率がわかっているならもうちょっと頭の良い方法でも良い
1個ずつ分岐するのは大抵の場合効率が悪い
0368デフォルトの名無しさん
垢版 |
2017/10/21(土) 12:37:28.95ID:Hb3Ud/Wn
avrってメモリ保護とかあるの?
なければ
・jmp命令とオペランド(飛び先)をテーブルにする
・機能番号でテーブルからjmp命令を拾ってくる
・次のjmp命令を書き換える
だけじゃねぇか
そこだけram上でやればいい
0375デフォルトの名無しさん
垢版 |
2017/10/23(月) 17:31:11.48ID:lCIoxZis
罪linkx
0376355
垢版 |
2017/10/23(月) 17:36:41.36ID:zdzyG1CL
なんで俺が死刑なんだよ
変なことは書いてないだろ
0380デフォルトの名無しさん
垢版 |
2017/10/29(日) 16:53:13.43ID:crR+gSB3
 ┌○┐
 │死|ハ,,ハ
 │  |゚ω゚ )  
 │刑| //
 └○┘ (⌒)
    し⌒
0381デフォルトの名無しさん
垢版 |
2017/11/07(火) 14:26:10.97ID:r6tXNL/D
 ┌○┐
 │ハ|ハ,,ハ
 │  |゚ω゚ )  
 │ゲ| //
 └○┘ (⌒)
    し⌒
0387デフォルトの名無しさん
垢版 |
2018/02/28(水) 17:54:56.02ID:F8/eMdWm
6800の本買ってしまった
0389デフォルトの名無しさん
垢版 |
2018/04/11(水) 12:27:17.38ID:bG1z7LTF
Z80の本が出たときは我慢出来たけど
6800の本が出たときは逝ってしまった
0390デフォルトの名無しさん
垢版 |
2018/04/14(土) 19:53:08.11ID:xcHHAJfd
zeas88
一月かけて入力して動かなかった
三月かけてダンプをチェックしても動かなかった

思い出した
0392デフォルトの名無しさん
垢版 |
2018/05/23(水) 19:48:01.34ID:Au5e7VGg
僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』

VM3VN
0394デフォルトの名無しさん
垢版 |
2018/07/05(木) 01:47:01.59ID:RfoszcD2
RS0
0396デフォルトの名無しさん
垢版 |
2018/09/05(水) 04:25:32.38ID:qK+vip/P
Intel記法とAT&T記法ってどっちがいいと思う?
思う? とか訊いておいて 実は俺のなかではAT&T記法のほうがいいと思ってるw
例えば
add eax,4
addl $4,%eax
という命令があってAT&T記法のほうはUnixで用いられているコマンド
(というかOS/2系列でも同じようなコマンドがあるが)
$ copy aaa.txt bbb.txt
の文法に並びがそっくりだし,変数に$を前置するというのもUnixで最もよく用いられているB系シェルの
変数を表わす規則と同じ。レジスタに%が付いてるのも分かりやすいと思う。

今主流なのはIntel記法なので 残念ながら俺は少数派なんだろうがw
0397デフォルトの名無しさん
垢版 |
2018/09/05(水) 11:09:53.34ID:/V9AsOwQ
add eax,4
0399デフォルトの名無しさん
垢版 |
2018/09/05(水) 11:52:27.66ID:vQx16S6k
>>395
チェックサムは、

・・・ A B ・・・SUM1
・・・ B A ・・・SUM2

見たいな間違いがあると、縦横チェックサムであっても、
間違いに気づく事が出来なかったなぁぁ・・・。
0400デフォルトの名無しさん
垢版 |
2018/09/05(水) 17:15:48.86ID:vQx16S6k
雑誌に書いてあったバイナリコード :
・・・ A B ・・・SUM1
・・・ B A ・・・SUM2

間違って入力したコード
・・・ B A ・・・SUM1
・・・ A B ・・・SUM2

これだと、横・縦の両方のチェックサムが雑誌と同じになってしまう。
0401デフォルトの名無しさん
垢版 |
2018/09/24(月) 17:55:23.64ID:7SQMHJ5j
>>396
gccでIntel記法でアセンブラ出力できるよ
gcc -S -masm=intel hogehoge.c
インラインアセンブラでIntel記法使う場合も
gcc -masm=intel hogehoge.c

objdumpでIntel記法で逆アセンブルする場合は
objdump -M intel -d hogehoge.obj
0403デフォルトの名無しさん
垢版 |
2018/09/27(木) 01:21:30.14ID:GWQb325r
396ですが,AT&T記法を中心に学ぶことにしました。
理由は,2つあり,
・OSの勉強をするためにこれから読んでいこう(というか既に読んでいる)
UNIX v6 for x86のアセンブラがAT&T記法である
・仕事でアセンブラを使う訳ではないので,今現在普及しているものでなくてよい
つまりIntelが発表するCPUの最新機能を使ったりする機会がないので
枯れた情報しかないAT&T記法でも十分やっていけると考えた
ということです。
まあ,チラ裏ですが,これから個人でアセンブラを学ぶとしてる人が見てれば参考にして下さい。
0404デフォルトの名無しさん
垢版 |
2018/09/27(木) 03:14:00.28ID:3iNJ0doV
Intel・AT&T 記法を抽象化した、仮想アセンブラのLLVM で学べ!

情報処理資格でも、仮想アセンブラのCASL 2
0405デフォルトの名無しさん
垢版 |
2018/09/27(木) 05:41:06.10ID:fZkL81UT
gdbの逆アセンブラも
set disassembly-flavor intel
と打ち込めばIntel記法で逆アセンブルしてくれる
デフォルトでIntel記法にしたいならホームディレクトリの.gdbinitに上記を記述
詳しくはググると出てくるかも
0406デフォルトの名無しさん
垢版 |
2018/09/27(木) 06:24:39.43ID:fZkL81UT
ARMは
mov r0, #4
64bitのARMは
mov x0, #4
と右から左

MIPSも
li $4, 4
RISC-Vも
li a0, 4
と右から左

PowerPCも
li %r3, 4
と右から左

今のパソコンやサーバでメジャーなCPUの多くが右から左
0407デフォルトの名無しさん
垢版 |
2018/09/27(木) 08:56:29.52ID:GWQb325r
しかしどうして右から左に読むのでしょうね。
英語だと特に
move number to address
と自然に読み下せるのに。(というかニーモックってまさにその目的の筈では……)
0409デフォルトの名無しさん
垢版 |
2018/09/27(木) 10:12:23.20ID:+X2PETpr
左右なんてどっちでもいい
記法もどっちでもいい

もっと本質的なことに頭使え
0410デフォルトの名無しさん
垢版 |
2018/09/27(木) 10:27:51.73ID:lockuNq+
アセンブラの本質って機械語不便だからわかりやすくする記法なのに
それに気を使わずにどこに頭使うの?
0411デフォルトの名無しさん
垢版 |
2018/09/27(木) 11:04:46.72ID:JRG0evD8
>>407
ある種の文化の衝突が起きていると思う。

事実標準に近かったZ80などでは、語順的には、今「Intel記法」と
呼ばれているものだった。でもIntel記法よりも洗練されている
感じだった。それが、人気があったひとつの理由だと思ってる。

でも、学者などは、さかさまに固執するような印象が多い気がする。
なんでも市場や事実標準とは逆を好む天邪鬼みたいな姿勢の人が多い。

たとえば、NEC機が流行っていたころは、京大構内では日立マシンが標準だった。
今、Windowsマシンが標準なのに、灯台ではMacが標準。
0412デフォルトの名無しさん
垢版 |
2018/09/27(木) 11:13:26.21ID:JRG0evD8
>>411
学者は、事実標準に逆らったことをするのが大好き。なぜなら、そうすれば、
自分たちが優位になると思っているから。

たとえば、数式処理プログラムのMaximaも、LISPで書かれているし、
AI関連のライブラリが充実している言われる、Pythonも然り。

東大がMacを標準にしたのは、表向きはMSの独占的地位を破壊するため
かも知れないが、裏には、プログラミングが得意な学生に学者が負ける
と面目を保てなくなるのが困るからではないかと考えられている。
0415デフォルトの名無しさん
垢版 |
2018/09/27(木) 19:08:47.41ID:fZkL81UT
UNIX v6やv7が使われた16bitミニコンのPDP-11やBSDが使われたVAX11が左から右の記法だった
PDP-11からの影響を受けた680x0も左から右

だから1970年代、1980年代前半から半ばまでのUNIX界隈では左から右が主流だった
だからx86のAT&T記法が左から右なんだろうな
1980年代終り頃に普及したMIPS、POWERが右から左の記法
(よく知らないがSPARCやPA-RISCは左から右のようだ)
要するに左から右の記法はPDP-11の影響を受けてるわけだ
(VAX11はPDP-11の後継の32bitミニコン)
SPARC、PA-RISCが左から右なのは
680x0を使ったワークステーションの後継機種用のCPUとして作られたからだろうな
今でも680x0の影響を受けてるCPUは左から右

逆に言えば、パソコンやサーバ、スマホなどは
PDP-11、VAX11、680x0などのCPUの影響を受けてないCPUが主流
0416デフォルトの名無しさん
垢版 |
2018/09/27(木) 20:12:35.94ID:GWQb325r
そういう経緯とか全然知らんかったわ。
Z80は古い機種だと思うんだけど,>>411によればIntel記法に近いらしい。
一概に,「昔はAT&T記法が主流だった」とも言えねえのな。
0417デフォルトの名無しさん
垢版 |
2018/09/27(木) 21:20:43.26ID:v+2P+rz3
>>416
Intel 8080 の改良版が、Z80。
以下、同じ命令を、8080とZ80について書いてみる。
Z80の方が現代のアセンブリ言語に近く、人間には覚え易くて
理解しやすいが、アセンブラの作成が当時としては難しくなった。
Z80がなぜ人気が爆発したか、これだけ見ても分かるかと思う。

【8080】
MVI A,byte  ; A <-- byte  // move immediate を略して MVI
MOV A,B   ; A <-- B   // 意味は同じなのに、第二オペランド
               // がレジスタに変わったなっただけで命令表記が変わる。
MOV A,M   ; A <--(HL)  // M の意味は、(HL)
MOV H,A   ; H <-- A
MOV L,A   ; L <-- A
LXI H,word  ; HL <-- word  // これも意味は move なのに命令が変わる。
LHLD word   ; HL <---(word) // これも、現代なら単に(word)と書けばいいとこ
                // ろが命令自体を変えなければならなかった。

【Z80】
LD A,byte
LD A,B
LD A,(HL)
LD H,A
LD L,A
LD HL,word
LD HL,(word)

【参考】
http://nemesis.lonestar.org/computers/tandy/software/apps/m4/qd/opcodes.html
0418デフォルトの名無しさん
垢版 |
2018/09/27(木) 21:37:48.64ID:v+2P+rz3
>>415
命令表記を左右逆にしていれば、今頃 68000 が天下を取っていたかもしれない。

高級言語の「A = B」がそのまま、MOV A,B と書けるのはやはり分かりやすいので。
0419デフォルトの名無しさん
垢版 |
2018/09/27(木) 21:50:06.74ID:v+2P+rz3
>>417
昔も今もそうかもしれないが、IntelもMSも、余り「判りやすく書く」
「すっきりと設計する」ということが余り得意ではないかもしれない。

MSの作ったAPIは構造が汚い。
0420デフォルトの名無しさん
垢版 |
2018/09/27(木) 21:55:12.76ID:v+2P+rz3
Zilogがせっかく、二モニックを美しく修正したのに、Intelは、また、MMX や SSE以後で
汚くしてしまった。

それに、セグメントの概念もMMUの設計もひどかった。
セグメントに関しては、トランジスタの集積度が少なすぎてしょうがなかったのかも
しれないが、それを長く引きずりすぎた。

80386のプロテクトモードなんかどうでも良くて、単にプロテクトの無い32BITの
フラットモードがあれば喜ばれ、MS-DOSが今でも続いていたかもしれない。
0421デフォルトの名無しさん
垢版 |
2018/09/27(木) 22:00:30.07ID:GWQb325r
>>418
しつこくてすまんが
$ cp file.org file.new
$ mv file.org file.new
↑こういう操作を考えると
AT&T記法のほうが馴染みやすくない?
0423デフォルトの名無しさん
垢版 |
2018/09/28(金) 15:38:54.43ID:O5kQkBkV
CP/M copy も右から左だったぜ
0424デフォルトの名無しさん
垢版 |
2018/09/28(金) 15:43:05.12ID:hWUH9Sli
>>423
http://afsoft.jp/os/p02.html
CP/M も copy コマンドは、「左から右」だったと思うけど:

COPYコマンド
ディスクをコピーします。
【書式】COPY {mode} {コピー元} {コピー先}
 mode : ALL・・・ディスク全部をコピー
     BOOT ・・ブートトラックをコピー
     FILES・・ブートトラック以外をコピー
 
0425デフォルトの名無しさん
垢版 |
2018/09/28(金) 15:50:53.05ID:O5kQkBkV
お前つかったことないやろ
0427デフォルトの名無しさん
垢版 |
2018/09/28(金) 16:09:07.08ID:hWUH9Sli
コピーではないが、rename コマンドにそれらしき痕跡はあった。
確かに、右から左で、しかも、「=」記号もつけていたらしいね:


http://www.discordia.org.uk/px4/cpm.html

REN [d:]newname.ext = oldname.ext
Change the name of a disk file from oldname.ext to newname.ext
0428デフォルトの名無しさん
垢版 |
2018/09/28(金) 16:11:14.79ID:hWUH9Sli
これかな???


PIP [d:][newfile.ext]=[d:][filespec][<t>
Copy files between peripherals whilst performing optional conversion <t>.

Copy file from drive to drive: C> PIP H:=A:INFO.DAT
Copy file to new name: C> PIP A:NEW.DAT=A:INFO.DAT
Copy file to printer: C> PIP LST:=A:LETTER.TXT
0429デフォルトの名無しさん
垢版 |
2018/09/28(金) 16:13:46.37ID:hWUH9Sli
確かに有った。copy コマンドが登場するより前に、PIP コマンドがあったのか。
知らなかった。

https://en.wikipedia.org/wiki/Peripheral_Interchange_Program

The original PIP syntax was

PIP destination←source /switches
using the left-arrow character from the ASCII-1963 character set
that the Flexowriter keyboards of the time used.
As other terminals were introduced that used later versions
of ASCII (without the left-arrow character), PIP allowed the syntax

PIP destination=source
0433デフォルトの名無しさん
垢版 |
2018/09/28(金) 20:45:43.66ID:TLhVFQk5
でもcopyコマンド(in CP/M)自体はUnix風の動作なんだよね。
pipコマンドというとPythonのアレしか思い浮かばないがw
0434デフォルトの名無しさん
垢版 |
2018/09/28(金) 23:16:34.75ID:0Eaaaj8i
PIPエレキバン
0435デフォルトの名無しさん
垢版 |
2018/09/29(土) 07:03:12.39ID:NSCd5Wk/
pipはビルトインじゃなくて外部コマンドだったから数バイトのコピーするときにでも
pipを読み込むために数十KBの実行ファイルをフロッピーゴトゴト言わせてからコピーが始まる
0436デフォルトの名無しさん
垢版 |
2018/09/29(土) 09:44:28.70ID:PPHj/b7C
>>435
マジかよww
なんでそんな不便な方法しかなかったんだろう
当時はそれが一番効率的と考えられてたんかな
0441デフォルトの名無しさん
垢版 |
2018/10/01(月) 19:31:45.23ID:gNvpqBnl
MS-DOSのVer2.xxからはいろんな意味でUNIXをリスペクトしてるからな
UNIX流にファイルハンドルでファイルを扱ったり、階層ディレクトリを導入したり、
環境変数を導入したりな
マイクロソフト自身がXENIXというUNIXを販売してたしね
0452デフォルトの名無しさん
垢版 |
2018/10/14(日) 16:01:42.97ID:13p+7YwI
>>451
MMX, SSE〜SSE4, AVX, AVX2, AVX512 は、SIMD命令だから、ループを展開して、
ベクトル計算のように考え直した場合、そのベクトルの足し算やベクトルの
要素ごとの掛け算などが速くできるようになる。
0454デフォルトの名無しさん
垢版 |
2018/10/19(金) 01:46:50.25ID:7j5wTJzZ
x86_64のRAXのRってなんの略か分かる?
EAXはExtended AX、AXはAccumulator (eXtended)でしょう。
「R」とはいったいなんなのだろう。

それとは別に、EAXって拡張拡張可算なんだね。
互換性とかの観点からすると仕方無いとも思うが もうちょっとマシな名前はなかったんだろうかw
0460デフォルトの名無しさん
垢版 |
2018/11/01(木) 19:26:14.88ID:upF+pHX5
i386アセンブラで書かれたGNU coreutilsみたいよ。
なんか紹介文に「アセンブラ楽しいから 皆もソース読んでね!」みたいなことが書かれてたw
0463デフォルトの名無しさん
垢版 |
2018/11/12(月) 16:49:29.06ID:D6ILV7Jx
iOSアプリでPoketAssemblyなるもの落としたんだが、説明に英語でLC-3アセンブリ言語って書いてて、
初めて見るCPUなんだが、何か情報源知ってたら教えて欲しい。
ネットで調べてもイマイチ見つからない。

幸いにも?CASL2に似てる命令っぽいし、マクロ的なのは多いっぽいのはサンプル見て理解出来た。
命令一覧があれば遊べそうなんだが。。。
0465デフォルトの名無しさん
垢版 |
2018/11/27(火) 17:52:50.88ID:Obj68CxZ
ありがとう。
ざっと読んだ感じ、立ち位置的にもアメリカ版CASLみたいな教育用アセンブラって感じみたいね。
リンク辿って簡単な入門書読んでみたけど、結構独特の文法。
(あっちでは普通なのかもだけど)
0468デフォルトの名無しさん
垢版 |
2021/01/04(月) 12:36:40.84ID:YWROyFrK
あげ
0471デフォルトの名無しさん
垢版 |
2021/01/08(金) 04:06:12.38ID:1gvHWZUI
最近Shenzhen I/Oっていうゲームで遊んでる。
なかなか面白い。
0513デフォルトの名無しさん
垢版 |
2021/02/04(木) 08:43:11.73ID:kdCq8hC0
>>417
1.5年前の書き込みで誰もいないスレだと思うけどw

ふと思ったんだけど、これ言語設計した人に
ヘブライ語圏とか右から左に書く言語の人がいたりしたんじゃないかな、などと思ったり

MOV A,B   例えばこれ左から読むと日本人には言語的にわかりやすい

BをAに移動

この説どう?w
0515デフォルトの名無しさん
垢版 |
2021/02/04(木) 16:01:32.25ID:5NLcheWJ
よだうそ
んまいらぶへ
0516デフォルトの名無しさん
垢版 |
2021/02/04(木) 16:17:11.89ID:R0EDVzG0
>>513
mov A,B   //(1)
に関して、

英語圏の人では、必ず語順が
「from B to A」
となるので、(1)とは逆になり違和感を感じる人が居るらしいが日本語では、
「AにBを代入する」
という言い方だと(1)と同じ順序になり、昔から問題ないと言われている。
個人的には、言葉ではなく、数学の
A=B
という表記と同じなので、Z80やx86のこの順序が天下をとったと見ている。
0517デフォルトの名無しさん
垢版 |
2021/02/04(木) 16:23:56.28ID:R0EDVzG0
>>516
数学で、量を定義する際、
A≡式
のように書くことがあるが、Aは短い変数名で、右辺の式は大体、長い。
このような定義式を複数、縦に並べたて書く時に、変数を左側に書いたほうが
≡の記号が同じ場所に並んで見やすい。
そのために、左辺にdestination、右辺にsourceを書く習慣になったと
個人的には考えている。
0518デフォルトの名無しさん
垢版 |
2021/02/04(木) 16:28:12.05ID:dB2jWvbu
だ右らか左々元は語本日
だ人本日は08Z
0519デフォルトの名無しさん
垢版 |
2021/02/04(木) 18:02:14.26ID:R0EDVzG0
古くは、Fortran, Basic の時代から、Pascal, C、C++、JS、Java、Perl, Ruby、C#、Python
に至るまで、変数 A に式 B の値を代入する構文は、
1. A = B
と書いてきた。これは、数学の記号と似てる。そしてその順序を
そのままアセンブラで持ち込めば、
2. mov A,B
と書ける。ところが、英語で mov (移動する)という言葉を使う際、
1と大体意味的に同じことは(本来はmovではなくcopyであるのだが)、
3. I mov an B to A.
の順序になってしまう。それでこの順序で書きたい人が出て来て
そういうアセンブラも存在するようになった。
今でも、LLVMでは、
4. A = add 型名 B, C で A = B + C の意味なのに、
A = B の意味では、Aがレジスタではない変数の場合には、
5. store 型名 B, 型名* Aのアドレス
の順序で書き、A がレジスタの場合には、
6. A = load 型名 * Bのアドレス
と書く。
5.では、1と順序が逆になっているが、6.では、1と同じである。
(この書き方は、数学的統一性が無いので好きではない。)
0633デフォルトの名無しさん
垢版 |
2021/04/01(木) 23:50:31.13ID:FF3FmUz9
 。
0772デフォルトの名無しさん
垢版 |
2021/05/17(月) 14:16:52.29ID:ZoPDf4ci
  LD HL,0 ; DEHL := DE * BC ; min 445, max 723
  LD A,D
  ADD A,A
  JP NC,skp0
  LD H,B
  LD L,C
skp0:
repeat 7
  ADD HL,HL
  ADC A,A
  JP NC,skp1
  ADD HL,BC
  ADC A,0
skp1:
end repeat
  LD D,A
  LD A,E
  LD E,H
  LD H,0
repeat 8
  ADD HL,HL
  ADC A,A
  JP NC,skp2
  ADD HL,BC
  ADC A,0
skp2:
end repeat
  ADD A,E
  LD E,A
  LD A,0
  ADC A,D
  LD D,A
0777◆QZaw55cn4c
垢版 |
2021/05/18(火) 19:56:48.68ID:TyliVLtj
>>772
16ビット÷16ビット=16ビット……16ビット
を CASL で
0791デフォルトの名無しさん
垢版 |
2021/05/21(金) 22:36:02.69ID:fb3J9YDI
>>777
; GR1 ÷ GR2 → GR1 … GR2
    LAD GR4,65535
    LAD GR3,0
LOOP SLL GR3,1
    SLL GR1,1
    JOV SKP1
    JUMP SKP2
SKP1 LAD GR3,1,GR3
SKP2 CPL GR3,GR2
    JMI SKP3
    SUBL GR3,GR2
    LAD GR1,1,GR1
SKP3 SLL GR4,1
    JNZ LOOP
    LAD GR2,0,GR3
0913デフォルトの名無しさん
垢版 |
2021/06/24(木) 16:04:46.50ID:JPMoDMed
>>912
運営に通報すれば、アボーンはしてくれるはずだけど、規制すると
同じプロバイダの人も規制されてしまって迷惑が掛かるかな。
0917デフォルトの名無しさん
垢版 |
2021/06/24(木) 23:52:58.33ID:2na/xH0t
パックマンにドットを食べてもらおう
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 3610日 8時間 47分 29秒
10021002
垢版 |
Over 1000Thread
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/

▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。

ニューススポーツなんでも実況