BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / soft-design / #21877同步于 2007/10/20
该镜像源已超过 30 天没有更新,可能在源站已被删除。
SoftDesign机器人发帖

有什么资料用于学习c的编译后的代码。

zouguoluguo
2007/10/20镜像同步10 回复
我不知道这个标题有没有错误。 今天自个认为把c的char,char *的知识学会了。 写下了这样的代码,知道输出是什么个样子,但很想知道编译过后这个代码会是怎么样的一个情况。 比如,编译器会给c变量分配什么地址,p变量会是什么地址,是基于哪个标准分配的。 #include<stdio.h> int main() { char c; char *p; p=&c; *p=97; printf("%c", *p); getchar(); return 0; } 本人有16位汇编win32汇编基础,请达人介绍介绍好书看。
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
cussyou机器人#1 · 2007/10/20
可以输出汇编,看看就好了 局部变量是从堆栈里分配的,一般是相对于栈顶的偏移(呵呵,应该没记错,只见过,没用过) vc6.0 有选项可以生成汇编 gcc 选项是 -S 吧 会有大牛解答的
cussyou机器人#2 · 2007/10/20
资料... 不清楚啊,不过一些汇编语言的书上,会讲如何汇编使用c库和用汇编写c的库,应该涉及到了.
rebirthatsix机器人#3 · 2007/10/20
按道理说你有汇编基础的话应该会看程序的反汇编代码吧 至于你想知道怎么分配的这个机理那估计要了解编译原理了
zouguoluguo机器人#4 · 2007/10/21
感觉很盲目地看反汇编得代码不是一个好办法,没有一个指导方向。 刚在看"C陷阱与缺陷",刚看到第二章,太牛逼了!写了以下代码,如果没看过那本书,真的很难读懂。(注:感觉写以下的代码不是为了花哨而写,读懂了更能明白内存呀指针之类的知识) #include<stdio.h> int fun()//函数的起始地址为4199056 { int x=1; printf("%d", x); return 0; } int main() { int (*p)(); void (*q)(); (*(void (*)())4199056)(); getchar(); return 0; } 【 在 rebirthatsix 的大作中提到: 】 : 按道理说你有汇编基础的话应该会看程序的反汇编代码吧 : 至于你想知道怎么分配的这个机理那估计要了解编译原理了
ericyosho机器人#5 · 2007/10/21
把vc里面的生成list的选项打开,可以选择源代码和汇编代码一起,这样比较容易看懂。
Mythology机器人#6 · 2007/10/22
【 在 zouguoluguo 的大作中提到: 】 : 感觉很盲目地看反汇编得代码不是一个好办法,没有一个指导方向。 : 刚在看"C陷阱与缺陷",刚看到第二章,太牛逼了!写了以下代码,如果没看过那本书,真的很难读懂。(注:感觉写以下的代码不是为了花哨而写,读懂了更能明白内存呀指针之类的知识) : #include<stdio.h> : ................... yes 也许你现在想看的是操作系统的内存布局, windows的话就看看windows核心编程那本书吧还有pe文件的格式~
zouguoluguo机器人#7 · 2007/10/23
之前看了罗云彬的win32汇编,讲pe文件,看得一头雾水。 今天下午看了两个多小时的『深入理解计算机系统.』终于找到了我想看的东西了, 讲的是c语言编译成汇编语言的。 赞! 【 在 Mythology 的大作中提到: 】 : yes 也许你现在想看的是操作系统的内存布局, : windows的话就看看windows核心编程那本书吧还有pe文件的格式~
hman机器人#8 · 2007/10/27
深入理解计算机系统 这本书这么好? 我也要看看了
wario机器人#9 · 2007/10/29
《深入理解计算机系统》 《linkers and loaders》 PE/ELF 规范 再加上IDA Pro 应该差不多了 再深就直接看windows或者linux源代码好了