- 浏览: 140412 次
- 性别:
- 来自: 北京
文章分类
最新评论
main 启动对应机器码分析
0x2730: pushl $0 ( 将出错码入栈)
当异常发生时,如果控制单元没有自动地把一个硬件错误代码插入到栈中,相应的汇编语言片段会包含一条pushl $0指令,在栈中垫上一个空值,如果错误码已经被压入堆栈,则没有这条指令。然后,把异常处理函数的地址压进栈中;函数的名字由异常处理程序名与do_前缀组成
0x2732: movl %esp, %ebp
栈指址(低地址)%esp栈顶值赋给栈基址(高地址)%ebp栈底,设置 main函数的栈基址
0x2734: andl $-16, %esp
它等价于 andl $0xfffffff0,%esp,也就是说把%esp内的最后4位给抹掉,强制让%esp的值是16的倍数,GCC默认的堆栈是16字节对齐的,为了加快CPU的访问效率
0x2737: subl $16, %esp
%esp栈顶向下移动16个字节,给临时变量留出来
0x273a: movl 4(%ebp), %ebx
保存旧的栈基址,4(%ebp)等于 : (%ebp +4) ,%ebp + 4
是表示一个地址值,加上括号表示存储在该地址上的内容
0x273d: movl %ebx, (%esp)
复制对齐的指针 ,把%ebx的值写到栈顶,但不会使栈指针值发生变化
0x2740: leal 8(%ebp), %ecx
局部变量的地址直到程序运行才能被识别,必须用leal指令寻址。但leal的效率相对movl xxx要低得多 ,传送%ebp+8的地址写到%ecx寄存器
0x2743: movl %ecx, 4(%esp)
把%ecx的值写到%esp+4
0x2747: addl $1, %ebx
%ebx+1
0x274a: shll $2, %ebx
%ebx 左移2位
0x274d: addl %ecx, %ebx
%ebx+ %ecx
0x274f: movl %ebx, 8(%esp)
把%ebx值写到%esp+8
0x2753: movl (%ebx), %eax
把%ebx值写到%eax寄存器
0x2755: addl $4, %ebx
%ebx+4
0x2758: testl %eax, %eax
testl的执行会影响状态寄存器。%eax & %eax
如果al不为0,则testb %eax , %eax,标志位NZ为1
0x275a: jne 0x2753 ; start + 35
jne不等于时转移
0x275c: movl %ebx, 12(%esp)
把%ebx值写到%esp+12
0x2760: calll 0x27b0 ; main at main.m:14
calll 将当前的IP压栈后,转到标号处执行指令
调用0x27b0标示的程序
0x2765: movl %eax, (%esp)
把%eax值写到%esp
0x2768: calll 0xb2db6 ; symbol stub for: exit
调用0xb2db6标示的程序
0x276d: hlt
cpu暂停,等到有复位信号或中断信号输入再运行
0x276e: nop
空指令,就是让cpu等待一个周期,可能等待外设输入
0x276f: nop
0x2730: pushl $0 ( 将出错码入栈)
当异常发生时,如果控制单元没有自动地把一个硬件错误代码插入到栈中,相应的汇编语言片段会包含一条pushl $0指令,在栈中垫上一个空值,如果错误码已经被压入堆栈,则没有这条指令。然后,把异常处理函数的地址压进栈中;函数的名字由异常处理程序名与do_前缀组成
0x2732: movl %esp, %ebp
栈指址(低地址)%esp栈顶值赋给栈基址(高地址)%ebp栈底,设置 main函数的栈基址
0x2734: andl $-16, %esp
它等价于 andl $0xfffffff0,%esp,也就是说把%esp内的最后4位给抹掉,强制让%esp的值是16的倍数,GCC默认的堆栈是16字节对齐的,为了加快CPU的访问效率
0x2737: subl $16, %esp
%esp栈顶向下移动16个字节,给临时变量留出来
0x273a: movl 4(%ebp), %ebx
保存旧的栈基址,4(%ebp)等于 : (%ebp +4) ,%ebp + 4
是表示一个地址值,加上括号表示存储在该地址上的内容
0x273d: movl %ebx, (%esp)
复制对齐的指针 ,把%ebx的值写到栈顶,但不会使栈指针值发生变化
0x2740: leal 8(%ebp), %ecx
局部变量的地址直到程序运行才能被识别,必须用leal指令寻址。但leal的效率相对movl xxx要低得多 ,传送%ebp+8的地址写到%ecx寄存器
0x2743: movl %ecx, 4(%esp)
把%ecx的值写到%esp+4
0x2747: addl $1, %ebx
%ebx+1
0x274a: shll $2, %ebx
%ebx 左移2位
0x274d: addl %ecx, %ebx
%ebx+ %ecx
0x274f: movl %ebx, 8(%esp)
把%ebx值写到%esp+8
0x2753: movl (%ebx), %eax
把%ebx值写到%eax寄存器
0x2755: addl $4, %ebx
%ebx+4
0x2758: testl %eax, %eax
testl的执行会影响状态寄存器。%eax & %eax
如果al不为0,则testb %eax , %eax,标志位NZ为1
0x275a: jne 0x2753 ; start + 35
jne不等于时转移
0x275c: movl %ebx, 12(%esp)
把%ebx值写到%esp+12
0x2760: calll 0x27b0 ; main at main.m:14
calll 将当前的IP压栈后,转到标号处执行指令
调用0x27b0标示的程序
0x2765: movl %eax, (%esp)
把%eax值写到%esp
0x2768: calll 0xb2db6 ; symbol stub for: exit
调用0xb2db6标示的程序
0x276d: hlt
cpu暂停,等到有复位信号或中断信号输入再运行
0x276e: nop
空指令,就是让cpu等待一个周期,可能等待外设输入
0x276f: nop
发表评论
-
Foundation和UIKit框架组织图
2013-01-28 08:58 6128... -
[转]linux常用命令
2013-01-26 22:33 841本文来自于http://blog.csdn.net/totog ... -
[转] NSString 控件消息
2013-01-19 15:52 1029【转】http://www.tongwenguan.com/o ... -
关闭arc
2013-01-17 22:35 04.2前的xcode中,打开“Build Setting”,找 ... -
地址薄源码分析
2013-01-17 10:13 1607ContactViewController.h 头文件 #im ... -
歌曲源码剪切分析
2013-01-16 17:19 7531mian.m 以及appdelegate就不说了,主要说说C控 ... -
[转]深入理解Objective-c中@class的含义
2013-01-16 07:16 1016[转]http://blog.prosight.me/i ... -
UIImageView【转】
2013-01-16 07:17 5414【转】http://my.oschina.net/plumso ... -
isKindOfClass<> isMemberOfClass[转]
2013-01-15 10:27 0转http://blog.csdn.net/totogo201 ... -
NSString 截取,文件读取【转】
2013-01-16 07:18 1498【转】http://www.cnblogs.com/csj00 ... -
loadNibNamed
2013-01-15 10:05 0动态加载,就是在程序运行当中,根据需要动态地加载一些视图,常常 ... -
respondsToSelector
2013-01-15 09:31 2475respondsToSelector该方法询问对象以确定其是否 ... -
initWithFrame<>initWithCoder
2013-01-15 09:19 1724initWithFrame 和 initWithCode ... -
协议protocol
2013-01-16 07:17 1046自定义协议语法如下: @protocol 协议名称 方法之声明 ... -
addSubview<>insertSubView
2013-01-15 08:35 3532addSubview是一层一层往上加,新加的只能放到父视图的最 ... -
UIViewController生命周期[转]
2013-01-15 00:09 935转http://www.cnblogs.com/smileEv ... -
IBOutlet IBaction 详解
2013-01-14 23:33 4328IBOutlet对于编译器而言只是一个标记,也就是 ... -
AppDelegate.m 介绍
2013-01-14 22:59 6574【转】[url] www.cnblogs.com/xunzi ... -
didReceiveMemoryWarning
2013-01-14 21:52 5552[转]http://blog.csdn.net/yy404 ... -
OC-plist xib pch StoryBoard
2013-01-14 21:12 1189plist plist文件是什么呢? 它全名是: ...
相关推荐
ios demo,object-c调用函数和c++函数。
iOS的函数响应型编程,翻译的。 http://www.oschina.net/p/FunctionalReactiveProgrammingOniOS
iOS开发 通用Utilities类 工具函数集合
本Demo支持IOS实现微信移动应用扫码登录,会在手机端生成二维码,供其他手机微信扫码等自己的应用APP
iOS 上的二维码 条形码的生成与扫描,具体使用说明请参看文章 http://write.blog.csdn.net/postlist 里的条形码 二维码的生成
iOS-RAC-高阶函数-带注释
iOS二维码、条形码的生成与扫描
Drawing graphs of point, linear function, power function, exponential function, logarithmic function, circular function, etc ... (实现了在坐标系中画点,一次函数,幂函数,指数函数,对数函数,三角函数等)
本书主要讲解函数式响应型编程的概念,以及ReactiveCocoa的界面和实践,并讲解了MVVM On iOS。
操作系统:支持Ios 7.0 硬件配置:推荐ARM Cortex-A7以上,1G RAM 摄像头:支持自动对焦,200万像素以上 安装程序占用空间,2MBytes
iOS开发中经常会要求展示网络图片, 这个代码实现的是UIImageView和UIButton的类别类, 用来异步展示网络图片, 同时提供了一个 get_http_data函数,用来异步下载网络数据。 简单介绍请看下面的BLOG连接。 ...
使用ios自带的二维码识别类,可以识别二维码,条形码。以及支持从相册中选择带有二维码和条形码的图片进行识别。
使用ios系统自带扫码完成的一个demo,增加了保存扫描图像的功能;
超级签适配IOS15.2支持一码多用安装渠道安装超级签名系统分发系统多种证书 如果有问题请联系QQ6964830
类似支付宝支付控件,输入4个数字,依次显示在4个控件,删除也是从后往前删除。
Github地址:https://github.com/mengxianliang/XLCardSwitch CSDN地址:http://blog.csdn.net/u013282507/article/details/54136812
ios扫一扫功能,集成相机,图片。识别二维码及条形码。有需要的同学,可以下载看看,直接集成到项目中。
定义三角形(Triangle)、矩形(Rectangle)和圆形(Circle)三个形状类。编写一个程序,能够根据用户输入生成相应的形状类对象。将形状的信息输出到显示器和文件中。具体说明如下:
IOS7解锁,开机密码,ID