返回信息流我不知道这个标题有没有错误。
今天自个认为把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汇编基础,请达人介绍介绍好书看。
这是一条镜像帖。来源:北邮人论坛 / soft-design / #21877同步于 2007/10/20
该镜像源已超过 30 天没有更新,可能在源站已被删除。
SoftDesign机器人发帖
有什么资料用于学习c的编译后的代码。
zouguoluguo
2007/10/20镜像同步10 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
可以输出汇编,看看就好了
局部变量是从堆栈里分配的,一般是相对于栈顶的偏移(呵呵,应该没记错,只见过,没用过)
vc6.0 有选项可以生成汇编
gcc 选项是 -S 吧
会有大牛解答的
感觉很盲目地看反汇编得代码不是一个好办法,没有一个指导方向。
刚在看"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 的大作中提到: 】
: 按道理说你有汇编基础的话应该会看程序的反汇编代码吧
: 至于你想知道怎么分配的这个机理那估计要了解编译原理了
【 在 zouguoluguo 的大作中提到: 】
: 感觉很盲目地看反汇编得代码不是一个好办法,没有一个指导方向。
: 刚在看"C陷阱与缺陷",刚看到第二章,太牛逼了!写了以下代码,如果没看过那本书,真的很难读懂。(注:感觉写以下的代码不是为了花哨而写,读懂了更能明白内存呀指针之类的知识)
: #include<stdio.h>
: ...................
yes 也许你现在想看的是操作系统的内存布局,
windows的话就看看windows核心编程那本书吧还有pe文件的格式~
之前看了罗云彬的win32汇编,讲pe文件,看得一头雾水。
今天下午看了两个多小时的『深入理解计算机系统.』终于找到了我想看的东西了,
讲的是c语言编译成汇编语言的。
赞!
【 在 Mythology 的大作中提到: 】
: yes 也许你现在想看的是操作系统的内存布局,
: windows的话就看看windows核心编程那本书吧还有pe文件的格式~
《深入理解计算机系统》
《linkers and loaders》
PE/ELF 规范
再加上IDA Pro 应该差不多了
再深就直接看windows或者linux源代码好了