b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

otool_otoole_对mac的终端写otool(2)

电脑杂谈  发布时间:2017-04-21 10:10:19  来源:网络整理

[/codesyntax]Magic字段,用于标明当前文件是32位还是64位的常量。

32位通常定义如下:

[codesyntax lang="c" lines="fancy"]

  #define     MH_MAGIC     0xfeedface
  /* the mach magic number */

[/codesyntax] 64位通常定义如下:

[codesyntax lang="c" lines="fancy"]

 #define MH_MAGIC_64 0xfeedfacf
 /* the 64-bit mach magic number */

[/codesyntax]Cputype段用于只是当前文件的目标架构,即当前代码只能在指定CPU上运行。

[codesyntax lang="c" lines="fancy"]

#define CPU_TYPE_ARM          ((cpu_type_t) 12)

[/codesyntax] Cputype在/usr/include/mach/machine.h中定义;

Cpusubtype指定CPU确切的模型。其定义同样参见/usr/include/mach/machine.h;

Filetype字段用于标识文件的布局包括对齐方式等。在/usr/include/mach-o/loader.h中定义了filetype字段的常量。

Ncmds和sizeofcmds字段,加载命令的数目和大小。

Flag字段。

4. 加载命令

头部之后就是加载命令。加载命令的数目以及总的大小在header中已经给出。加载命令标识文件的布局以及链接相关的信息,主要包含:

虚拟地址的出师布局,包括某段(segment)某区域(section)的起始地址以及大小;

用于动态链接的符号表;

主线程的初始化状态;

共享库。

利用命令otool –l XX 可以获取加载命令区。

Otool –l ButtonFun;所得加载命令如下(截取一小部分,完整版见最后的附件):

ButtonFun:

Load command 0

cmd LC_SEGMENT

cmdsize 56

segname __PAGEZERO

vmaddr 000000000

vmsize 000001000

fileoff 0

filesize 0

maxprot 000000000

initprot 000000000

nsects 0

flags 00

Load command 1

cmd LC_SEGMENT

cmdsize 464

segname __TEXT

vmaddr 000001000

vmsize 000002000

fileoff 0

filesize 8192

maxprot 000000007

initprot 000000005

nsects 6

flags 00

先看一下加载命令定义:

[codesyntax lang="c" lines="fancy"]

struct load_command {
       uint32_t cmd;
       /* type of load command */
       uint32_t cmdsize;
       /* total size of command in bytes */
};

[/codesyntax]cmd是一个字符串常量,用来指示命令类型。对于每一种命令类型都有一个专有的结构体。具体的加载命令类型可以参考/usr/include/mach-o/loader.h


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/tongxinshuyu/article-42605-2.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    • 猫目静先生
      猫目静先生

      方便面是人家日本人发明的

    热点图片
    拼命载入中...