免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: 老手

从asm角度看C/C++  关闭 [复制链接]

论坛徽章:
0
发表于 2008-12-27 23:21 |显示全部楼层
哪个公司这么变态 : 培养cracker的啊

论坛徽章:
0
发表于 2008-12-27 23:32 |显示全部楼层
C跟汇编本来就走得很近 , 我拿它说事 ,探讨都是C/C++ , 虽然角度不同 。  我觉得切入点很好。 我就不清楚个别人怎么不理解了呢?

论坛徽章:
0
发表于 2008-12-28 00:23 |显示全部楼层
整体看就看不懂了...

论坛徽章:
0
发表于 2008-12-28 11:42 |显示全部楼层
老大,看你说得这么好,你直接整理整理让版主加个精华得了。在这边和一群人绕有意思么?

论坛徽章:
0
发表于 2008-12-28 12:11 |显示全部楼层
这里是论坛 , 论坛就是这样:-)

论坛徽章:
0
发表于 2008-12-28 12:24 |显示全部楼层
呵呵,我坐着等mik兄来拍几块板砖

论坛徽章:
0
发表于 2008-12-28 12:35 |显示全部楼层
原帖由 老手 于 2008-12-27 23:03 发表
再谈谈上面提到的这个问题:变量不能存在于通用寄存中 。

有人可能会有疑问: 不是有个register 关键字么 ?

这个起不了作用 ,

其一 , register 只是建议 , 要不要用得看编译器的“心情”。

其二 ...


怎么不能?感觉你的理解是有些片面。

变量的概念存在与高级语言中,是一种通用的表示,具体是否放置在寄存器是有编译器或者由特定的语法指定的。

例如,我们可以告诉编译器不要使用一个寄存器,而用特定方法来访问它。

论坛徽章:
0
发表于 2008-12-28 12:38 |显示全部楼层
原帖由 老手 于 2008-12-27 01:23 发表
.set var_8 , -8
.set var_4 , -4
.set arg_4 , 4

stwu %sp , -0x10(%sp)
mflr  %r0
li      %r4 ,  0
addi  %r3 , %sp , 0x10 + var_8
stw   %r0 , 0x10 + arg_4(%sp)

bl   .gettimeofday

lwz  ...


代码翻译成 C 言并不复杂,需要点时间对照。

论坛徽章:
0
发表于 2008-12-28 12:43 |显示全部楼层
原帖由 abutter 于 2008-12-28 12:35 发表


怎么不能?感觉你的理解是有些片面。

变量的概念存在与高级语言中,是一种通用的表示,具体是否放置在寄存器是有编译器或者由特定的语法指定的。

例如,我们可以告诉编译器不要使用一个寄存器,而用特 ...



能否举个具体的例子 。

只要一个例子就足以推翻我的“假设”。

论坛徽章:
0
发表于 2008-12-28 12:46 |显示全部楼层
原帖由 老手 于 2008-12-28 12:43 发表



能否举个具体的例子 。

只要一个例子就足以推翻我的“假设”。


例如说, u-boot 的 ppc 实现里面把全局数据指针保存在 r29 中,在重定位时赋值,然后用 register volatile gd_t *gd asm ("r29") 声明,在 C 语言中用 gd 来访问。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP