0

次のコードがあります。誰かが私が括弧内に持っている質問を説明してもらえますか?

# Execution begins at address 0 (why?)
.pos 0
irmovq stack, %rsp  # Set up stack pointer  (how can i move the word "stack" in rsp)
call main   # Execute main program
halt    # Terminate program  

# Sample linked list   (what is the purpose of .align 8?)
.align 8
ele1:
.quad 0x00a
.quad ele2
ele2:
.quad 0x0b0
.quad ele3
ele3:
.quad 0xc00
.quad 0

main:
irmovq ele1,%rdi
call sum
ret


sum:


# Stack starts here and grows to lower addresses
.pos 0x100
stack:
4

2 に答える 2

1

実行が開始されるのは、次の行で実行される0ためです。.pos 0

「スタック」という単語は移動されません。これは、スタック ポインターをメモリ内のその場所にstack設定する、コード内のさらに下のラベルです。rsp

8 バイト境界に揃える目的は、プロセッサがそのような境界を橋渡しすることを快く思わないためです。.quadディレクティブは 8 バイトのデータを生成します。

チュートリアルを求めるのは話題から外れています。それらをグーグルで検索して、自分に適していると思われるものを選ぶのは非常に簡単です.

于 2016-10-28T18:38:01.287 に答える