私は本Professional Assembly Language on Mac OS X Monttain Lionに従おうとしています。Google で次の URL に Mac OS X 用のポートを見つけました: Assembly on MacOS X
Vim でファイルを作成し、GAS でコンパイルしました: as -g -arch i386 -o cpuid.o cpuid.s gcc を使用してコードをリンクしました: gcc -m32 -arch i386 -o cpuid cpuid.o
結果の実行可能 cpuid はエラーなしで実行されますが、最後に gdb でデバッグしようとすると、プログラムが正常に終了したのではなく、プログラムがコード 044 で終了したと表示されます。
正しく終了させる方法を見つけようとして、C で hello world の例を作成し、次のアセンブリ コードを生成しました: gcc -Wall -03 -m32 -fno-PIC hello_pf.c -S -o hello_pf.s 結果アセンブリコードは次のとおりです。
.section __TEXT,__text,regular,pure_instructions
.globl _main
.align 4, 0x90
_main:
pushl %ebp
movl %esp, %ebp
subl $24, %esp
leal L_.str, %eax
movl %eax, (%esp)
call _puts
movl $0, -8(%ebp)
movl -8(%ebp), %eax
movl %eax, -4(%ebp)
movl -4(%ebp), %eax
addl $24, %esp
popl %ebp
ret
.section __TEXT,__cstring,cstring_literals
L_.str:
.asciz "Hello world!\n"
.subsections_via_symbols
- 誰かがこの問題に関して助けを提供できますか?
- IA-32 mac ox s アセンブリを使用して、上記のリンクから cpuid の作業バージョンを作成するにはどうすればよいですか?
- Mac OS X でのスタック アラインの問題の詳細な説明はどこで確認できますか? Apple のサイトを読んだことがありますが、初心者にとってはあまり役に立ちません。
- 上記サンプルコードのcall _puts以降の命令は何ですか?
- アセンブリからのlibc関数の呼び出しは実際にはどのように機能しますか? このトピックに関する詳細な記事はありますか?
ありがとうございました!