|....,,__
|_::;; ~"'ヽ
| //^''ヽ,,)
| i⌒"
| ∀`) < 誰もいない きのこるならいまのうち
|⊂
| ノ
_,,,......,,__
/_~ ,,...:::_::;; ~"'ヽ
(,, '"ヾヽ i|i //^''ヽ,,)
^ :'⌒i i⌒"
|( ´∀`) < きのこ のこーのこ げんきのこ ♪
|(ノ |つ
| |
⊂ _ ノ
""U
_,,,......,,__
/_~ ,,...:::_::;; ~"'ヽ
(,, '"ヾヽ i|i //^''ヽ,,)
^ :'⌒i i⌒"
(´∀` )| < エリンギ まいたけ ブナシメジ ♪
⊂| (ノ |
| |
ヽ _ ⊃
.U""
|
| ミ
| ミ サッ!
| ミ
|
頭悪い【】だな。
てかアセンブラスレから独立させるほど話題あるか?
このスレッドは天才チンパンジー「アイちゃん」が
言語訓練のために立てたものです。
アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。
京都大学霊長類研究所
就活に追われる学生が
newtiedになりたいって言ってた
_ __ rくヾ\
___ , ≠´ : : : :  ̄`:´ : : : : :  ̄:三>xヾ\\
///:厶/ : : : : : : : : : : : : : : : : : : : : : : : : : : :`ヾ:\\
. ///:/イ: : : : : : : : : : : : : : : i: : : : : : : : : : : : : : : : 、\ゝィ1
///:/: : : : : : : : : : : : : : : : : : l: : : : : : : : : : : ヽ: : : : ヽ:ヘ l:|
. lTlン: : : : : : : : : : : : : i : : : : : l: : : : : : : : : : : : : \: : : ',:ハ!jヽ
,∨: : : ; : : : : : : : :i: : : l : : : : : ト 、: : : : : : : : : : : : :ヽ: : ',:',:',
/:/: : : :,': : : : : : : : :l: : : :l : : : : : l \ : : : : : : : : : : : : \ハ: :',:l
. /: l: : : : ;! : : : : : : : : !: : : :ト 、: : : :', ` <: : : : : : : : : : : ヾ : l: :l
/ : :|: : : /|: : : : : : : : :,l: : : ;'_\ : : ヘ ィ´ ` <: : : : : : : :ヘ: :!: :、
. /: : : | : :,': :| : : : : : : : ハ: :/ ` ヽ: : :ヽ ' _ \ : : : : : : :| :∧
/: : : : l : l、: :|: : : : : : : i _V-−- 、 \ : \ ,ィく-.、 トハ ト、: : : : : ! : : !
: : : : : ∨: |Y : : : : : : | f7て)−ミ. ヽ ` ーニゝ.ヒ':::::}.l || l: :ヽ: : : :l: : : l
: : : : : : : : | `| : : : : : : | V! い::::::::}.l い、::ク ノ/ l : : ハ: : ;l: : : :!
: : : : : : : :||: : : : : :.| ヾ 廴ー_'丿 ` ー " |: : l ノ: 九: : : ',
: : : : : : : : :! い: : : : :| ,、 八 l レ' !: : : : l なんだ?呼んだか?
: : : : : : : : :l ヽ : : : : ハ r‐- - ┐ /: : :l |: : : : :|
: : : : : : : : :1 \:_: : :ヽ、 い ノ イ 廴/ | : : : : |
: : : : : : : : :ハ ーヒ、: みー _ ` ー ´_ . <3{ ヽ. |: : : :|
: : : : : : : : :.∧ /`¨〒==9oュTトく >x ∧ヘl (ハ |: : : : :|
みなさんお世話になりました
明日で2ch終了らしいので
今のうちに最後のご挨拶をしておきます
xor eax,eaxはeaxをゼロにする、といったアセンブリ技術のことが沢山
書かれたサイトを教えて下さい。
問題。
AL に入っている数値を [DI] に16進数2ケタで出力せよ。
※ [DI+00] に上位桁、[DI+01] に下位桁
>>30 サイトより、タイトルに「マシン語秘伝の書」って入ってる古本を2冊ほどゲットするのが
結局てっとり早いと思う。
あともうちょっと高級な技なら "Hacker's delight" の元ネタの多くが書かれている HAKMEM とか。
x86よりARMの方が面白そう
でもnasmはx86専用なのか
質問です。
以下をnaskとnasmそれぞれでアセンブルしたら、
結果が異なりました。
7FFFFFFFと出力したいところ、FFFFFF7Fと出力してしまいます。
nasmの出力結果を、naskの出力結果とあわせたいです。
どうしたらいいでしょうか?
アセンブル前のコード
MOV EAX,CR0
AND EAX,0x7FFFFFFF
OR EAX,0x00000001
MOV CR0,EAX
nasmの出力
0F20C0 MOV EAX,CR0
6625FFFFFF7F AND EAX,0x7FFFFFFF
6683C801 OR EAX,0x00000001
0F22C0 MOV CR0,EAX
naskの出力
0F20C0 MOV EAX,CR0
66257FFFFFFF AND EAX,0x7FFFFFFF
6683C801 OR EAX,0x00000001
0F22C0 MOV CR0,EAX
Big Endian ・ Little Endian でも違っているのでは?
回答ありがとうございます。
Endianも含め、学習しなおしてきます。
nasmでリスティングファイルも一緒に出力したい場合は
32bit
nasm -f elf -l hogehoge.lst hogehoge.s
64bit
nasm -f elf64 -l hogehoge.lst hogehoge.s
nasmでのx86_64のLinuxでの32bitアセンブル
nasm -f elf hogehoge.s
ld -melf_i386 -o hogehoge hogehoge.o
nasmでのx86_64のLinuxでの64bitアセンブル
nasm -f elf64 $1.s
ld -o $1 $1.o
Ubuntuでのnasmのインストール方法
sudo apt-get install nasm
ちなみにx86_64上のLinuxで32bitのバイナリを作成したい場合はこう
x86_64のLinuxでのCの32bitのx86バイナリのコンパイル
gcc -m32 -O2 -o hogehoge hogehoge.c
x86_64のLinuxでの32bitのx86アセンブル
as --32 -a=hogehoge.lst -o hogehoge.o hogehoge.s
ld -melf_i386 -o hogehoge hogehoge.o
Linuxでのアセンブル方法はこんな感じ
as -a=hogehoge.lst -o hogehoge.o hogehoge.s
ld -o hogehoge hogehoge.o
アセンブル方法はこんな感じ
aarch64-linux-gnu-as -a=hogehoge.lst -o hogehoge.o hogehoge.s
aarch64-linux-gnu-ld -o hogehoge hogehoge.o
gcc-arm-linux-gnueabihf-as -a=hogehoge.lst -o hogehoge.o hogehoge.s
gcc-arm-linux-gnueabihf-ld -o hogehoge hogehoge.o
アセンブラはじめるならLinuxでやるといいよ
DOSと同じような感覚でアセンブラプログラミングができるから
こんな感じ
Linux でアセンブリプログラミング
http://www.mztn.org/lxasm/asm00.html Linux で64bitアセンブリプログラミング
http://www.mztn.org/lxasm64/amd00.html Linuxでのアセンブル方法はこんな感じ
as -a=hogehoge.lst -o hogehoge.o hogehoge.s
ld -o hogehoge hogehoge.s
UbuntuだとQEMUを入れるだけでQEMU+binfmtの設定が自動せされるから
ライブラリへのリンクを貼るだけで他のCPUのバイナリをそのまま実行できるようになる
UbuntuだとARM、MIPS、PowerPCができる
64bitARMならこんな感じ
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
32bitARMならこんな感じ
sudo apt-get install qemu
sudo apt-get install g++-arm-linux-gnueabihf
sudo ln -s /usr/arm-linux-gnueabihf/lib/ld-linux-armhf.so.3 /lib
sudo ln -s /usr/arm-linux-gnueabihf/lib /lib/arm-linux-gnueabihf
Cのコンパイル方法はこんな感じ
aarch64-linux-gnu-gcc -O2 -o hogehoge hogehoge.c
gcc-arm-linux-gnueabihf-gcc -O2 -o hogehoge hogehoge.c
アセンブル方法はこんな感じ
aarch64-linux-gnu-as -a=hogehoge.lst -o hogehoge.o hogehoge.s
aarch64-linux-gnu-ld -o hogehoge hogehoge.s
gcc-arm-linux-gnueabihf-as -a=hogehoge.lst -o hogehoge.o hogehoge.s
gcc-arm-linux-gnueabihf-ld -o hogehoge hogehoge.s
できたバイナリは普通に実行できる
./hogehoge
バイナリがどのアーキテクチャかはfileコマンドで確認できる
file hogehoge
すごく基本的な事でごめんなさい。
db = define byte = 1byte
dw = define word = 2byte
dd = define double word = 4byte
は分かりましたが、
hoge: db 'aaaaaaaaaaaaaaaaaa'
みたいな記述って、aaaaaaaaaaaaaaaaaa は明らかに 1byte 以上あるのに、
どういう事なんでしょうか。内容的には、a しか入っていないという理解で合ってますか?
hoge: db 0x61, 0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61,0x61
僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』
IJOVM