当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 2 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 字符串的汇编代码
帖子发表于 : 2013-03-02 17:01 

注册: 2013-03-02 16:55
帖子: 2
送出感谢: 0 次
接收感谢: 0 次
hi 大家好:
表达式一:
char a = 'a';

表达式二:
char *a = "a";

这两个c表达式再汇编中的区别是什么?
我有objdump -D 得到的汇编代码中发现了表达式一中的内容为:
movb $0x61 0x1f(%esp)
我的理解是是立即数0x61就是字符 a。不知道这样理解对吗?

当使用第二个表达式的时候编译后再dump在汇编文件中没有找到相应的0x61。
当做字符串处理的时候再汇编代码中式怎么处理这个字符串 变量的?

软件环境:ubuntu 12.04
硬件环境:dell optiplex 380
gcc版本:4.6.3

谢谢大家。


页首
 用户资料  
 
2 楼 
 文章标题 : Re: 字符串的汇编代码
帖子发表于 : 2013-03-02 18:06 
头像

注册: 2010-04-23 20:40
帖子: 1950
地址: 浙江·杭州
系统: Arch Linux
送出感谢: 2
接收感谢: 31
好好学习计算机原理和汇编吧 :em06
char *a = "a";
"a" 实际上是 0x61, 0x00,在只读段中,而变量 a 只是一个只读段的地址(指针)而已,看起来应该是 0x8xxxxxxx 之类的一大串
另外,应该写 const char * a = "a",因为修改 a 的内容会段错误(只读段不能修改的嘛)


_________________
我是 Giumo Clanjor(哆啦比猫/兰威举)
Where there is a hacker, there is art. | Develop for Developers. (C & perl5)
博客 | Clanjor Prods.
类 C 语言到 brainfuck 编译器


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 2 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 1 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译