Mail Archives: djgpp/1998/09/08/19:16:50
Eli Zaretskii wrote:
>
> On Mon, 7 Sep 1998, Endlisnis wrote:
>
> > > * Post the complete asm produced.
> > I don't know how to do that.
>
> Add -S to the compilation switches.
OK, Here is the input file, which seems to compile differently when giving asm
output, but it still isn't right! And included is the complete asm output, I
marked the place where it screws up, in the add function. Is there something
I'm doing wrong?
#include <iostream.h>
int add(int a, int b)
{
int Ret;
asm ("addl %1, %0" //this line compiles to "addl ecx,ecx".
: "=&r" (Ret)
: "0" (a), "r" (b)
);
return Ret;
}
int main()
{
int a=2,b=4;
cout << add(a,b);
return 0;
}
.file "t2.cc"
gcc2_compiled.:
___gnu_compiled_cplusplus:
.text
.def __G_int8_t; .scl 13; .type 02; .endef
.def __G_uint8_t; .scl 13; .type 014; .endef
.def __G_int16_t; .scl 13; .type 03; .endef
.def __G_uint16_t; .scl 13; .type 015; .endef
.def __G_int32_t; .scl 13; .type 04; .endef
.def __G_uint32_t; .scl 13; .type 016; .endef
.def __G_int64_t; .scl 13; .type 05; .endef
.def __G_uint64_t; .scl 13; .type 017; .endef
.def __G_llong; .scl 13; .type 05; .endef
.def __G_ullong; .scl 13; .type 017; .endef
.def __G_clock_t; .scl 13; .type 04; .endef
.def __G_dev_t; .scl 13; .type 04; .endef
.def __G_fpos_t; .scl 13; .type 017; .endef
.def __G_gid_t; .scl 13; .type 04; .endef
.def __G_ino_t; .scl 13; .type 04; .endef
.def __G_mode_t; .scl 13; .type 04; .endef
.def __G_nlink_t; .scl 13; .type 04; .endef
.def __G_off_t; .scl 13; .type 04; .endef
.def __G_pid_t; .scl 13; .type 04; .endef
.def __G_ptrdiff_t; .scl 13; .type 05; .endef
.def __G_sigset_t; .scl 13; .type 04; .endef
.def __G_size_t; .scl 13; .type 017; .endef
.def __G_time_t; .scl 13; .type 016; .endef
.def __G_uid_t; .scl 13; .type 04; .endef
.def __G_wchar_t; .scl 13; .type 04; .endef
.def __G_ssize_t; .scl 13; .type 04; .endef
.def __G_wint_t; .scl 13; .type 04; .endef
.def __G_va_list; .scl 13; .type 021; .endef
.def _ptrdiff_t; .scl 13; .type 04; .endef
.def _size_t; .scl 13; .type 017; .endef
.def _wchar_t; .scl 13; .type 04; .endef
.def __IO_lock_t; .scl 13; .type 01; .endef
.def __IO_marker; .scl 10; .type 010; .size 12; .endef
.def __next; .val 0; .scl 8; .tag __IO_marker; .size 12; .type 030; .endef
.def __sbuf; .val 4; .scl 8; .type 030; .endef
.def __pos; .val 8; .scl 8; .type 04; .endef
.def .eos; .val 12; .scl 102; .tag __IO_marker; .size 12; .endef
.def __IO_marker; .scl 13; .tag __IO_marker; .size 12; .type 010; .endef
.def __IO_FILE; .scl 10; .type 010; .size 72; .endef
.def __flags; .val 0; .scl 8; .type 04; .endef
.def __IO_read_ptr; .val 4; .scl 8; .type 022; .endef
.def __IO_read_end; .val 8; .scl 8; .type 022; .endef
.def __IO_read_base; .val 12; .scl 8; .type 022; .endef
.def __IO_write_base; .val 16; .scl 8; .type 022; .endef
.def __IO_write_ptr; .val 20; .scl 8; .type 022; .endef
.def __IO_write_end; .val 24; .scl 8; .type 022; .endef
.def __IO_buf_base; .val 28; .scl 8; .type 022; .endef
.def __IO_buf_end; .val 32; .scl 8; .type 022; .endef
.def __IO_save_base; .val 36; .scl 8; .type 022; .endef
.def __IO_backup_base; .val 40; .scl 8; .type 022; .endef
.def __IO_save_end; .val 44; .scl 8; .type 022; .endef
.def __markers; .val 48; .scl 8; .tag __IO_marker; .size 12; .type 030;
.endef
.def __chain; .val 52; .scl 8; .tag __IO_FILE; .size 72; .type 030; .endef
.def __fileno; .val 56; .scl 8; .type 04; .endef
.def __blksize; .val 60; .scl 8; .type 04; .endef
.def __offset; .val 64; .scl 8; .type 04; .endef
.def __cur_column; .val 68; .scl 8; .type 015; .endef
.def __unused; .val 70; .scl 8; .type 02; .endef
.def __shortbuf; .val 71; .scl 8; .dim 1; .size 1; .type 062; .endef
.def .eos; .val 72; .scl 102; .tag __IO_FILE; .size 72; .endef
.def __IO_FILE; .scl 13; .tag __IO_FILE; .size 72; .type 010; .endef
.def _$_0; .scl 10; .type 010; .size 16; .endef
.def _read; .val 0; .scl 8; .type 0224; .endef
.def _write; .val 4; .scl 8; .type 0224; .endef
.def _seek; .val 8; .scl 8; .type 0237; .endef
.def _close; .val 12; .scl 8; .type 0224; .endef
.def .eos; .val 16; .scl 102; .tag _$_0; .size 16; .endef
.def __IO_cookie_io_functions_t; .scl 13; .tag _$_0; .size 16; .type 010;
.endef
.def __IO_cookie_file; .scl 10; .type 010; .size 96; .endef
.def _file; .val 0; .scl 8; .tag __IO_FILE; .size 72; .type 010; .endef
.def _vtable; .val 72; .scl 8; .type 021; .endef
.def _cookie; .val 76; .scl 8; .type 021; .endef
.def _io_functions; .val 80; .scl 8; .tag _$_0; .size 16; .type 010; .endef
.def .eos; .val 96; .scl 102; .tag __IO_cookie_file; .size 96; .endef
.def __IO_cookie_file; .scl 13; .tag __IO_cookie_file; .size 96; .type 010;
.endef
.def _streamoff; .scl 13; .type 04; .endef
.def _streampos; .scl 13; .type 017; .endef
.def _streamsize; .scl 13; .type 04; .endef
.def ___fmtflags; .scl 13; .type 017; .endef
.def ___iostate; .scl 13; .type 014; .endef
.def __ios_fields; .scl 10; .type 010; .size 28; .endef
.def __strbuf; .val 0; .scl 8; .type 030; .endef
.def __tie; .val 4; .scl 8; .type 030; .endef
.def __width; .val 8; .scl 8; .type 04; .endef
.def __flags; .val 12; .scl 8; .type 017; .endef
.def __fill; .val 16; .scl 8; .type 03; .endef
.def __state; .val 18; .scl 8; .type 014; .endef
.def __exceptions; .val 19; .scl 8; .type 014; .endef
.def __precision; .val 20; .scl 8; .type 04; .endef
.def __arrays; .val 24; .scl 8; .type 021; .endef
.def .eos; .val 28; .scl 102; .tag __ios_fields; .size 28; .endef
.def __ios_fields; .scl 13; .tag __ios_fields; .size 28; .type 010; .endef
.def _io_state; .scl 15; .type 012; .size 4; .endef
.def _goodbit; .val 0; .scl 16; .type 013; .endef
.def _eofbit; .val 1; .scl 16; .type 013; .endef
.def _failbit; .val 2; .scl 16; .type 013; .endef
.def _badbit; .val 4; .scl 16; .type 013; .endef
.def .eos; .val 4; .scl 102; .tag _io_state; .size 4; .endef
.def _io_state; .scl 13; .tag _io_state; .size 4; .type 012; .endef
.def _open_mode; .scl 15; .type 012; .size 4; .endef
.def _in; .val 1; .scl 16; .type 013; .endef
.def _out; .val 2; .scl 16; .type 013; .endef
.def _ate; .val 4; .scl 16; .type 013; .endef
.def _app; .val 8; .scl 16; .type 013; .endef
.def _trunc; .val 16; .scl 16; .type 013; .endef
.def _nocreate; .val 32; .scl 16; .type 013; .endef
.def _noreplace; .val 64; .scl 16; .type 013; .endef
.def _bin; .val 128; .scl 16; .type 013; .endef
.def _binary; .val 128; .scl 16; .type 013; .endef
.def .eos; .val 4; .scl 102; .tag _open_mode; .size 4; .endef
.def _open_mode; .scl 13; .tag _open_mode; .size 4; .type 012; .endef
.def _seek_dir; .scl 15; .type 012; .size 4; .endef
.def _beg; .val 0; .scl 16; .type 013; .endef
.def _cur; .val 1; .scl 16; .type 013; .endef
.def _end; .val 2; .scl 16; .type 013; .endef
.def .eos; .val 4; .scl 102; .tag _seek_dir; .size 4; .endef
.def _seek_dir; .scl 13; .tag _seek_dir; .size 4; .type 012; .endef
.def _$_1; .scl 15; .type 012; .size 4; .endef
.def _skipws; .val 1; .scl 16; .type 013; .endef
.def _left; .val 2; .scl 16; .type 013; .endef
.def _right; .val 4; .scl 16; .type 013; .endef
.def _internal; .val 8; .scl 16; .type 013; .endef
.def _dec; .val 16; .scl 16; .type 013; .endef
.def _oct; .val 32; .scl 16; .type 013; .endef
.def _hex; .val 64; .scl 16; .type 013; .endef
.def _showbase; .val 128; .scl 16; .type 013; .endef
.def _showpoint; .val 256; .scl 16; .type 013; .endef
.def _uppercase; .val 512; .scl 16; .type 013; .endef
.def _showpos; .val 1024; .scl 16; .type 013; .endef
.def _scientific; .val 2048; .scl 16; .type 013; .endef
.def _fixed; .val 4096; .scl 16; .type 013; .endef
.def _unitbuf; .val 8192; .scl 16; .type 013; .endef
.def _stdio; .val 16384; .scl 16; .type 013; .endef
.def .eos; .val 4; .scl 102; .tag _$_1; .size 4; .endef
.def _$_2; .scl 15; .type 012; .size 4; .endef
.def _basefield; .val 112; .scl 16; .type 013; .endef
.def _floatfield; .val 6144; .scl 16; .type 013; .endef
.def _adjustfield; .val 14; .scl 16; .type 013; .endef
.def .eos; .val 4; .scl 102; .tag _$_2; .size 4; .endef
.def _Init; .scl 10; .type 010; .size 1; .endef
.def .eos; .val 1; .scl 102; .tag _Init; .size 1; .endef
.def _Init; .scl 13; .tag _Init; .size 1; .type 010; .endef
.def _ios; .scl 10; .type 010; .size 32; .endef
.def __ios_fields; .val 0; .scl 8; .tag __ios_fields; .size 28; .type 010;
.endef
.def _$vf; .val 28; .scl 8; .dim 2; .size 4; .type 0330; .endef
.def .eos; .val 32; .scl 102; .tag _ios; .size 32; .endef
.def _ios; .scl 13; .tag _ios; .size 32; .type 010; .endef
.def __seek_dir; .scl 13; .tag _seek_dir; .size 4; .type 012; .endef
.def _streammarker; .scl 10; .type 010; .size 12; .endef
.def __IO_marker; .val 0; .scl 8; .tag __IO_marker; .size 12; .type 010;
.endef
.def .eos; .val 12; .scl 102; .tag _streammarker; .size 12; .endef
.def _streammarker; .scl 13; .tag _streammarker; .size 12; .type 010; .endef
.def __IO_marker; .scl 13; .tag __IO_marker; .size 12; .type 010; .endef
.def __IO_FILE; .scl 13; .tag __IO_FILE; .size 72; .type 010; .endef
.def _streambuf; .scl 10; .type 010; .size 76; .endef
.def __IO_FILE; .val 0; .scl 8; .tag __IO_FILE; .size 72; .type 010; .endef
.def _$vf; .val 72; .scl 8; .dim 18; .size 4; .type 0330; .endef
.def .eos; .val 76; .scl 102; .tag _streambuf; .size 76; .endef
.def _streambuf; .scl 13; .tag _streambuf; .size 76; .type 010; .endef
.def _filebuf; .scl 10; .type 010; .size 76; .endef
.def _streambuf; .val 0; .scl 8; .tag _streambuf; .size 76; .type 010; .endef
.def .eos; .val 76; .scl 102; .tag _filebuf; .size 76; .endef
.def _filebuf; .scl 13; .tag _filebuf; .size 76; .type 010; .endef
.def ___manip; .scl 13; .tag _ios; .size 32; .type 0630; .endef
.def ___imanip; .scl 13; .type 0630; .endef
.def ___omanip; .scl 13; .type 0630; .endef
.def _ostream; .scl 10; .type 010; .size 36; .endef
.def _ios; .val 0; .scl 8; .tag _ios; .size 32; .type 010; .endef
.def _$vb; .val 0; .scl 8; .tag _ios; .size 32; .type 030; .endef
.def .eos; .val 36; .scl 102; .tag _ostream; .size 36; .endef
.def _ostream; .scl 13; .tag _ostream; .size 36; .type 010; .endef
.def _istream; .scl 10; .type 010; .size 40; .endef
.def _ios; .val 0; .scl 8; .tag _ios; .size 32; .type 010; .endef
.def _$vb; .val 0; .scl 8; .tag _ios; .size 32; .type 030; .endef
.def __gcount; .val 4; .scl 8; .type 017; .endef
.def .eos; .val 40; .scl 102; .tag _istream; .size 40; .endef
.def _istream; .scl 13; .tag _istream; .size 40; .type 010; .endef
.def _iostream; .scl 10; .type 010; .size 44; .endef
.def _istream; .val 0; .scl 8; .tag _istream; .size 40; .type 010; .endef
.def _ostream; .val 8; .scl 8; .tag _ostream; .size 36; .type 010; .endef
.def .eos; .val 44; .scl 102; .tag _iostream; .size 44; .endef
.def _iostream; .scl 13; .tag _iostream; .size 44; .type 010; .endef
.def __IO_istream_withassign; .scl 10; .type 010; .size 40; .endef
.def _istream; .val 0; .scl 8; .tag _istream; .size 40; .type 010; .endef
.def .eos; .val 40; .scl 102; .tag __IO_istream_withassign; .size 40; .endef
.def __IO_istream_withassign; .scl 13; .tag __IO_istream_withassign; .size
40; .type 010; .endef
.def __IO_ostream_withassign; .scl 10; .type 010; .size 36; .endef
.def _ostream; .val 0; .scl 8; .tag _ostream; .size 36; .type 010; .endef
.def .eos; .val 36; .scl 102; .tag __IO_ostream_withassign; .size 36; .endef
.def __IO_ostream_withassign; .scl 13; .tag __IO_ostream_withassign; .size
36; .type 010; .endef
.def _Iostream_init; .scl 10; .type 010; .size 1; .endef
.def .eos; .val 1; .scl 102; .tag _Iostream_init; .size 1; .endef
.def _Iostream_init; .scl 13; .tag _Iostream_init; .size 1; .type 010; .endef
.p2align 2
.def _add__Fii; .val _add__Fii; .scl 2; .type 044; .endef
.globl _add__Fii
_add__Fii:
LFB1:
.def .bf; .val .; .scl 101; .line 4; .endef
.def _a; .val 8; .scl 9; .type 04; .endef
.def _b; .val 12; .scl 9; .type 04; .endef
pushl %ebp
LCFI0:
movl %esp,%ebp
LCFI1:
subl $4,%esp
LCFI2:
pushl %ebx
LCFI3:
.def _Ret; .val -4; .scl 1; .type 04; .endef
.ln 6
movl 8(%ebp),%ecx //gets first parameter into ecx
movl 12(%ebp),%ebx //gets second into ebx
/APP
addl %ecx, %ecx //doubles ecx, instead of adding ebx to ecx!
/NO_APP
movl %ecx,-4(%ebp)
.ln 7
movl -4(%ebp),%edx
movl %edx,%eax
jmp L291
.align 2,0x90
.ln 8
L291:
movl -8(%ebp),%ebx
leave
ret
.def .ef; .val .; .scl 101; .line 8; .endef
.def _add__Fii; .val .; .scl -1; .endef
LFE1:
.p2align 2
.def _main; .val _main; .scl 2; .type 044; .endef
.globl _main
_main:
LFB2:
.def .bf; .val .; .scl 101; .line 15; .endef
pushl %ebp
LCFI4:
movl %esp,%ebp
LCFI5:
subl $8,%esp
LCFI6:
.def _a; .val -4; .scl 1; .type 04; .endef
.def _b; .val -8; .scl 1; .type 04; .endef
.ln 2
movl $2,-4(%ebp)
movl $4,-8(%ebp)
.ln 3
movl -8(%ebp),%eax
pushl %eax
LCFI7:
movl -4(%ebp),%eax
pushl %eax
LCFI8:
call _add__Fii
addl $8,%esp
LCFI9:
movl %eax,%eax
pushl %eax
LCFI10:
pushl $_cout
LCFI11:
call ___ls__7ostreami
addl $8,%esp
LCFI12:
movl %eax,%eax
.ln 4
xorl %eax,%eax
jmp L292
.align 2,0x90
xorl %eax,%eax
jmp L292
.align 2,0x90
.ln 5
L292:
leave
ret
.def .ef; .val .; .scl 101; .line 5; .endef
.def _main; .val .; .scl -1; .endef
LFE2:
.section .eh_frame
___FRAME_BEGIN__:
.long LECIE1-LSCIE1
LSCIE1:
.long 0
.byte 0x1
.byte 0x0
.byte 0x1
.byte 0x7c
.byte 0x8
.byte 0xc
.byte 0x5
.byte 0x4
.byte 0x88
.byte 0x1
.p2align 2
LECIE1:
.long LEFDE1-LSFDE1
LSFDE1:
.long LSFDE1-___FRAME_BEGIN__
.long LFB1
.long LFE1-LFB1
.byte 0x4
.long LCFI0-LFB1
.byte 0xe
.byte 0x8
.byte 0x84
.byte 0x2
.byte 0x4
.long LCFI1-LCFI0
.byte 0xd
.byte 0x4
.byte 0x4
.long LCFI3-LCFI1
.byte 0x83
.byte 0x4
.p2align 2
LEFDE1:
.long LEFDE3-LSFDE3
LSFDE3:
.long LSFDE3-___FRAME_BEGIN__
.long LFB2
.long LFE2-LFB2
.byte 0x4
.long LCFI4-LFB2
.byte 0xe
.byte 0x8
.byte 0x84
.byte 0x2
.byte 0x4
.long LCFI5-LCFI4
.byte 0xd
.byte 0x4
.byte 0x4
.long LCFI7-LCFI5
.byte 0x2e
.byte 0x4
.byte 0x4
.long LCFI8-LCFI7
.byte 0x2e
.byte 0x8
.byte 0x4
.long LCFI9-LCFI8
.byte 0x2e
.byte 0x0
.byte 0x4
.long LCFI10-LCFI9
.byte 0x2e
.byte 0x4
.byte 0x4
.long LCFI11-LCFI10
.byte 0x2e
.byte 0x8
.byte 0x4
.long LCFI12-LCFI11
.byte 0x2e
.byte 0x0
.p2align 2
LEFDE3:--
(\/) Endlisnis (\/)
s257m AT unb DOT ca
Endlisnis AT GeoCities DOT com
Endlis AT nbnet DOT nb DOT ca
- Raw text -