- 论坛徽章:
- 0
|
原帖由 zx_wing 于 2008-8-22 15:31 发表 ![]()
ABI对操作系统的地址空间布局有规定?不会吧。windows就是2:2啊
unix不都是把栈放上面,堆放下面,动态库在两者中间。solaris为什么搞的不一样?
对某个具体平台,例如386来说, ABI应该是Unix一个样, Windows一个样吧? 只知道所有的Unix平台都遵循那个叫做“Sys V..."的ABI, 不清楚windows怎么做的,应该不受约束(起码这份ABI文档的汇编格式都是AT&T的)
Solaris是个怪胎,处处和别的OS不一样:
$ cat aa.c
#include <stdio.h>
int main(void)
{
char cmd[256];
sprintf(cmd, "pmap %d", getpid());
system(cmd);
return 0;
}
$ gcc aa.c
$ ./a.out
11227: ./a.out
08045000 12K rwx-- [ stack ]
08050000 4K r-x-- /home/arc/a.out
08060000 4K rwx-- /home/arc/a.out
FEE3E000 4K rwxs- [ anon ]
FEE40000 24K rwx-- [ anon ]
FEE50000 1220K r-x-- /lib/libc.so.1
FEF91000 32K rwx-- /lib/libc.so.1
FEF99000 8K rwx-- /lib/libc.so.1
FEFB0000 4K rwx-- [ anon ]
FEFBF000 176K r-x-- /lib/ld.so.1
FEFFB000 8K rwx-- /lib/ld.so.1
FEFFD000 4K rwx-- /lib/ld.so.1
total 1500K |
|