0

otool を使用してバイナリに関する情報を取得しています。ここに私の出力の一部があります:

Load command 0
      cmd LC_SEGMENT_64
  cmdsize 72
  segname __PAGEZERO
   vmaddr 0x0000000000000000
   vmsize 0x0000000100000000
  fileoff 0
 filesize 0
  maxprot 0x00000000
 initprot 0x00000000
   nsects 0
    flags 0x0
Load command 1
      cmd LC_SEGMENT_64
  cmdsize 952
  segname __TEXT
   vmaddr 0x0000000100000000
   vmsize 0x0000000000268000
  fileoff 0
 filesize 2523136
  maxprot 0x00000005
 initprot 0x00000005
   nsects 11
    flags 0x0

ここで、command 1segname __TEXT始まることがわかりますvmaddr 0x0000000100000000

問題は、バイナリ サイズが 2.3 MB で、0x0000000100000000 が 4 GB であることです。

アドレスの真ん中の「1」は64ビットアーキテクチャに関係していると思いますが0x0000000100000000、実際には address 0x00. 私はそれについていくつかの情報を探していましたが、有用なものは何も見つかりませんでした. 誰かが私の仮定を確認し、これがどのように機能しているかを説明できますか?

4

1 に答える 1