. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->综合研究
主题 : :  main函数的偏移地址一直是ifa  [待解决] 回复[ 6次 ]   点击[ 1188次 ]  
abob
[帖 主] [ 发表时间:2009-04-03 15:32 ] 
荣誉值:169
信誉值:0
注册日期:2008-08-19 16:07
/* pm.c */ 
main() 

printf("%x\n",main);  


这个是我的实验,运行后得到偏移地址是1fa。看到大家也都是这个偏移地址。我想原因是跟c0s.obj有关。

除了使用tc编译连接生成exe外,还可以使用tcc.exe tlink.exe(和汇编的masm link差不多)
如tcc -c pm.c
tlink c0s pm,pm,,cs

如果这里不使用c0s,如使用c0m.obj,打印出的值就不是1fa了。
abob
[第3楼] [ 回复时间:2009-04-09 13:29 ] 
荣誉值:169
信誉值:0
注册日期:2008-08-19 16:07
对啊,光用简单的main函数~\(≧▽≦)/~啦啦啦,没有全面的去想这个问题!

D:\minic>tc pm.c
20e

D:\minic>type pm.c
int f(void);
int a,b,ab;

int f(void)
{
   ab=a+b;
   return ab;
}

main()
{
   int c;
   c=f();
   printf("%x\n",main);
}

D:\minic>debug pm.exe
-u 1fa
0B68:01FA 55            PUSH    BP
0B68:01FB 8BEC          MOV     BP,SP
0B68:01FD A12604        MOV     AX,[0426]
0B68:0200 03062804      ADD     AX,[0428]
0B68:0204 A32A04        MOV     [042A],AX
0B68:0207 A12A04        MOV     AX,[042A]
0B68:020A EB00          JMP     020C
0B68:020C 5D            POP     BP
0B68:020D C3            RET
0B68:020E 55            PUSH    BP
0B68:020F 8BEC          MOV     BP,SP
0B68:0211 83EC02        SUB     SP,+02
0B68:0214 E8E3FF        CALL    01FA
0B68:0217 8946FE        MOV     [BP-02],AX
-
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved