- 论坛徽章:
- 0
|
将long*传给int*,为什么有这样的现象
[quote="mik"]想知道答案,简单....
方法一:看编译器编出来的代码,每个编译器,编出的代码不尽相同...,看它生成的汇编代码。
方法二:调试[/quote]
汗,unix下面的汇编代码,偶实在看不懂.....
[code]
.LEVEL 2.0W
.SPACE $TEXT$,SORT=8
.SUBSPA $CODE$,QUAD=0,ALIGN=8,ACCESS=0x2c,CODE_ONLY,SORT=24
main
$PIC$0
.PROC
.CALLINFO CALLER,FRAME=64,ENTRY_GR=%r4,SAVE_RP,ORDERING_AWARE
.ENTRY
STD %r2,-16(%r30) ;offset 0x0
STD,MA %r3,144(%r30) ;offset 0x4
STD %r4,-136(%r30) ;offset 0x8
COPY %r29,%r3 ;offset 0xc
STD %r27,-128(%r30) ;offset 0x10
NOP ;offset 0x14
LDI 1,%r1 ;offset 0x18
STD %r1,-120(%r30) ;offset 0x1c
LDO -120(%r30),%r26 ;offset 0x20
.CALL ;in=26,29;out=28;
B,L fun,%r2 ;offset 0x24
LDO -48(%r30),%r29 ;offset 0x28
LDD -128(%r30),%r27 ;offset 0x2c
ADDIL L'M$10-$global$,%r27,%r1 ;offset 0x30
LDO R'M$10-$global$(%r1),%r28 ;offset 0x34
LDD -120(%r30),%r19 ;offset 0x38
LDD -120(%r30),%r24 ;offset 0x3c
COPY %r28,%r26 ;offset 0x40
COPY %r19,%r25 ;offset 0x44
.CALL ;in=24,25,26,29;out=28;
B,L printf,%r2 ;offset 0x48
LDO -48(%r30),%r29 ;offset 0x4c
LDD -128(%r30),%r27 ;offset 0x50
LDD -160(%r30),%r2 ;offset 0x54
LDD -136(%r30),%r4 ;offset 0x58
BVE (%r2) ;offset 0x5c
.EXIT
LDD,MB -144(%r30),%r3 ;offset 0x60
.PROCEND ;in=29;out=28;
.SPACE $TEXT$
.SUBSPA $CODE$,QUAD=0,ALIGN=8,ACCESS=0x2c,CODE_ONLY,SORT=24
fun
$PIC$1
.PROC
.CALLINFO FRAME=16,ENTRY_GR=%r4,ARGS_SAVED,ORDERING_AWARE
.ENTRY
STD,MA %r3,16(%r30) ;offset 0x68
STD %r4,-8(%r30) ;offset 0x6c
COPY %r29,%r3 ;offset 0x70
NOP ;offset 0x74
STD %r26,-64(%r29) ;offset 0x78
LDD -64(%r29),%r31 ;offset 0x7c
LDI 4,%r19 ;offset 0x80
STW %r19,0(%r31) ;offset 0x84
LDD -8(%r30),%r4 ;offset 0x88
BVE (%r2) ;offset 0x8c
.EXIT
LDD,MB -16(%r30),%r3 ;offset 0x90
.PROCEND ;in=26,29;out=28;
.SPACE $TEXT$
.SUBSPA $CODE$
.SUBSPA $CODE$
.SPACE $PRIVATE$,SORT=16
.SUBSPA $DATA$,QUAD=1,ALIGN=8,ACCESS=0x1f,SORT=16
.SUBSPA $SHORTDATA$,QUAD=1,ALIGN=8,ACCESS=0x1f,SORT=24
M$10
.ALIGN 8
.STRINGZ "%d,%ld\n"
.IMPORT $global$,DATA
.SPACE $TEXT$
.SUBSPA $CODE$
.EXPORT main,ENTRY,PRIV_LEV=3,NO_RELOCATION,LONG_RETURN
.SUBSPA $CODE$
.EXPORT fun,ENTRY,PRIV_LEV=3,NO_RELOCATION,LONG_RETURN
.IMPORT printf,CODE,NO_RELOCATION
.END
[/code] |
|