Xcodeでx86アセンブリを書く
Xcode 6です。
ファイル作成
新規プロジェクト作成でCommand Line Toolを選びます。
言語はCを選ぶ。
main.cは消しちゃいます。
新規ファイル作成から、
Assembly Fileを選びます。
こういうコードを書きます。
.global _main
.text
_main:
movl $1, %eax
subl $12, %esp
int $0x80
たぶんgasのAT&Tシンタックスというやつだと思います。(自信ない)
Intelシンタックス
Intelシンタックスを使うには .intel_syntax noprefix
をつけます。
.intel_syntax noprefix
.global _main
.text
_main:
mov eax, 1
sub esp, 12
int 0x80
ビルド
このままだと64bitでコンパイルされると思うので、32bitでコンパイルされるようにします。
ビルドしてできるファイルを file
コマンドで見てみると、x86_64からi386に変わっているのがわかります。
% file ams-test: Mach-O 64-bit executable x86_64
% file ams-test: Mach-O executable i386
デバッグ
ブレークポイントも置けます。
デバッガーのパネルではAll Variables, Registers, Globals and Statisticsを選択しておくとレジスタの値が見られます。
それから、Debug→Debug Workflow→Always Show Disassemblyにチェックを入れておくと、
ブレークポイントで止まるときにこういうのが出てきます。
ここはソースコードをintelシンタックスで書いたとしてもAT&Tシンタックスで表示されます。
また、そのすぐ下のView Memoryを選ぶとこういう画面が出てきます。
Addressというところに例えばespレジスタ周辺の値を入れると、スタックのメモリレイアウトが見られます。
Author And Source
この問題について(Xcodeでx86アセンブリを書く), 我々は、より多くの情報をここで見つけました https://qiita.com/edvakf@github/items/39866dc891b94d22b7cb著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .