GCC intel方式 実現できない

実現したいこと

CentOSにて、「Hello World」のアセンブリをIntel方式で作成し、gccでコンパイルし、実行しましたが、何も出力しません。
AT&T方式では作成し、正常に実行できたのですが、コンパイルもエラーメッセージがまったく出ず何が間違っているのか分かりません。ご教授いただけると幸いです。エラーメッセージがあれば、まだ道筋がわかるんですが・・・

発生している問題・分からないこと

OSバージョン
(VPSサーバにCentOSをインストールしてます)

bash

1$ cat /etc/os-release 2NAME="CentOS Linux"3VERSION="7 (Core)"4ID="centos"5ID_LIKE="rhel fedora"6VERSION_ID="7"7PRETTY_NAME="CentOS Linux 7 (Core)"8ANSI_COLOR="0;31"9CPE_NAME="cpe:/o:centos:centos:7"10HOME_URL="https://www.centos.org/"11BUG_REPORT_URL="https://bugs.centos.org/"12 13CENTOS_MANTISBT_PROJECT="CentOS-7"14CENTOS_MANTISBT_PROJECT_VERSION="7"15REDHAT_SUPPORT_PRODUCT="centos"16REDHAT_SUPPORT_PRODUCT_VERSION="7"

Intel方式で書いたアセンブリ

hello.s

1.intel_syntax noprefix 2 3.text 4.globl main 5 6 main: 7 mov rax, 1 8 mov rdi, 1 9 mov rsi, msg 10 mov rdx, 12 11 syscall 12 13 mov rax, 60 14 mov rdi, 1 15 syscall 16 17.data 18 msg: 19 .string "Hello World\n"

コンパイル時にエラーメッセージは出ず、実行しても何も表示されません。

bash

1$ gcc -Wall -o hello hello.s 2$ ./hello 3$

システムコール番号に間違いないか確認してますが、間違ってない様です。

bash

1$ ausyscall --dump | grep write21 write318 pwrite 420 writev 5296 pwritev 6311 process_vm_writev 7328 pwritev2 8$ ausyscall --dump | grep exit960 exit10231 exit_group

AT&T方式で以下アセンブリを作成し、実行しましたが正常に実行できている様です。

hello.s

1.text 2.globl main 3 4main: 5 mov $1, %rax 6 mov $1, %rdi 7 mov $msg, %rsi 8 mov $12, %rdx 9 syscall 10 11 mov $60, %rax 12 mov $1, %rdi 13 syscall 14 15 .data 16 msg: 17 .string "Hello World\n"

bash

1$ gcc -Wall -o hello hello.s 2$ ./hello 3$ Hello World

該当のソースコード

特になし
特になし

試したこと・調べたこと

上記の詳細・結果

Intel方式の記述でもgccでコンパイルできると聞いたので、いろいろ検索しました。
NASMではCentOSでもMacでも、実行でき、gccでもMacではなんとか実行できました。
エラーメッセージも出ず、AT&Tでもできたのになぜできないのかわかりません。

補足

特になし

コメントを投稿

0 コメント