アセンブラ初心者スレッド 2©2ch.net
レス数が1000を超えています。これ以上書き込みはできません。
人がいないスレをわざわざ上げる必要ないので
関係ない話なら他の上がっているスレに書けばいいだろ 素朴な思い付きの疑問なのだけど、どうして書籍としてAMD64の入門書が無いの?
需要も知識ある人も、それなりに居そうだけど。
まさか、AMDから許可がおりないとか? >>955
「図解64ビットがわかる (図解 知りたい!テクノロジー)」でググれ >>958
店頭在庫を見て歩いて早幾年、無いと思っていたけれどあるのね。
しかし多様性はなさそう。
情報ありがとう。 >>958
この人の本ってプログラミングに役立つん? 普通に考えてAMDやIntelが公開している最適化マニュアル等の方が役立つ >>960
プログラミングの本じゃない。プログラミングの前にx64のアーキテクチャを知らないと話にならないだろ。
それを知るための本。 64bitアセンブラの本もあるじゃないか
「64ビットアセンブラ入門―64ビットCPUの基本構造もやさしく解説」 (Amazon) アセンブラは、C のポインタで躓かないように
Z80 程度を少し (もちろんポインタを使う程度) やればいいと思う。 アセンブラやるのにアーキテクチャやCが必要なのかな? >>965
各種レジスタ構成やそれらの性質、仮想記憶のしくみなどを知らずにアセンブラやろうとするのは無謀もいいとこだろう。
Cで書いたコードの一部をアセンブラに書き換えて変更したり最適化するとき、Cのコードに対応するアセンブラソースが
どうなっているか見るにはCで何をしようとしているかわからないと話にならないだろう。
こういうことは知ってて損することはない。 >>963
その本、Cから呼び出す前提だったから、アセンブラでの変数宣言の仕方は載ってない。 >>967
細かいことは、Intelのリファレンスマニュアルを見ながら簡単な実験をすればわかる。
https://53ningen.com/assembly02/ >>970
Cコンパイラが生成したアセンブラよく読んだよ >>967
int some_data = 5;
という変数は、アセンブラでは以下のようにすると定義できる:
_DATA segment DWORD
_some_data dd 5
_DATA ends
dd は、define dword の意味。db だと byte, dw だと word、となる。
構造体の場合は、struc を使うか、または、メンバのdd,dw,dbをそのまま並べる。
自動 align はされないので、alignment をとりたい場合は、自分で pading するか、
align 擬似命令か、even 擬似命令を使う。 _DATA segment DWORD
の部分の DWORD は、そのセグメントの先頭を、DWORD でアラインする、という
意味。つまり、セグメントの先頭アドレスが 4 の倍数に配置される。
省略も可能。
アラインメントをしなくてもプログラムは動くが、少し遅くなることが有る。 >>973
いやいや、bus errorでしょもう。 今時のISAはアライメントズレでロード/ストアした場合でも遅くなるだけじゃね
IA32、AMD64、ARM、RX、RISC-V
あたりはアライメントがずれていても例外は吐かないように見える >>974
x86, AMD64 だと 読み書きが遅くなるだけで bus error にはならない。
但し、スタックポインタの値は 4 または 8 の倍数になっていないと
例外が起きる仕組みがある。 構造体メンバのアラインメントも、x86, AMD64 では速度面以外では必要ではない。
他の系統のCPUでは、アラインメントが揃ってないと読み込めない様になっている
ことがあるが、x86, AMD64 の人から見ると、そういったCPUに足をひきづられて
ウザイことがある。
そういうCPUのために、x86, x64 では不要の構造体のアラインメントなどウルサすぎる。 構造体メンバのアラインは、x86、x64でも速度のために有ったほうが良いかも
知れないが、バイナリファイルの中の32BIT整数の部分をアラインするのは、
ちょっと抵抗を感じることがある。
ファイルの場合、読み込み速度よりサイズの小ささが重要だと思うので。
他のCPUでは読み込めないなら、そのCPUの設計が欠陥だとも考えられるし、
そんなCPUの事まで配慮してサイズが増大するのはいい迷惑。 バイナリファイル解析してるとアライン考慮部分と全く配慮してないが混在されてるのがまれによくある アライメントなんかアセンブルディレクティブ疑似命令で自動でやってくれるでしょ.sizeofとかもアライメント考慮してサイズ返してくれるし。
コンパイラが再生するデータ構造はアライメント合わせされてる。x86でオプティマイズサイズだとされないか。 高性能PC!!
を謳ってる配信でintelが全く見当たらなくなったのは隔世の感があるな。
配信してる超絶プログラマさんももうAMDしか選択肢がない言うてた >>979
まれにあるのか?よくあることなのか?どっちでもいいが まもなくここは 乂1000取り合戦場乂 となります。
\∧_ヘ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
,,、,、,,, / \〇ノゝ∩ < 1000取り合戦、いくぞゴルァ!! ,,、,、,,,
/三√ ゚Д゚) / \____________ ,,、,、,,,
/三/| ゚U゚|\ ,,、,、,,, ,,、,、,,,
,,、,、,,, U (:::::::::::) ,,、,、,,, \オーーーーーーーッ!!/
//三/|三|\ ∧_∧∧_∧ ∧_∧∧_∧∧_∧∧_∧
∪ ∪ ( ) ( ) ( ) )
,,、,、,,, ,,、,、,,, ∧_∧∧_∧∧_∧ ∧_∧∧_∧∧_∧∧_∧
,,、,、,,, ( ) ( ) ( ) ( ) このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 1361日 23時間 35分 51秒 5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php レス数が1000を超えています。これ以上書き込みはできません。