.file "mod_arith.cpp" .code32 .globl __1cIjava_add6Fii_i_ .type __1cIjava_add6Fii_i_, @function .globl memcpy .type memcpy, @function .globl __1cNjava_subtract6Fii_i_ .type __1cNjava_subtract6Fii_i_, @function .globl __1cNjava_multiply6Fii_i_ .type __1cNjava_multiply6Fii_i_, @function .globl __1cIjava_add6Fxx_x_ .type __1cIjava_add6Fxx_x_, @function .globl __1cNjava_subtract6Fxx_x_ .type __1cNjava_subtract6Fxx_x_, @function .globl __1cNjava_multiply6Fxx_x_ .type __1cNjava_multiply6Fxx_x_, @function .local Dlrodata.lrodata .local Dldata.ldata .ident "@(#)stdint.h 1.1 03/12/04 SMI" .ident "@(#)stdint.h 1.1 03/12/04 SMI" .ident "@(#)int_types.h 1.10 04/09/28 SMI" .ident "@(#)feature_tests.h 1.26 11/04/12 SMI" .ident "@(#)ccompile.h 1.2 04/11/08 SMI" .ident "@(#)isa_defs.h 1.30 11/03/31 SMI" .ident "@(#)int_limits.h 1.9 04/09/28 SMI" .ident "@(#)int_const.h 1.5 04/09/28 SMI" .ident "@(#)string.h 1.27 07/01/14 SMI" .ident "@(#)string_iso.h 1.5 04/06/18 SMI" .section .text,"ax" { 20 } .align 4 /================================================================================ / FUNCTION __1cIjava_add6Fii_i_ / arg0 "in1": 4(%esp), / arg1 "in2": 8(%esp), __1cIjava_add6Fii_i_: .CG2: / BLOCK: 3, pred: 1, succ: 4, count: 1.000000 / FILE mod_arith.cpp / 1 !// gcc -O -S -o mod_arith.s mod_arith.cpp / 2 ! / 3 !#include / 4 !#include / 5 ! / 6 !typedef int32_t jint; / 7 !typedef uint32_t juint; / 8 !typedef int64_t jlong; / 9 !typedef uint64_t julong; / 10 ! / 11 !#define JAVA_INTEGER_OP(OP, NAME, TYPE, UNSIGNED_TYPE) \ / 12 !TYPE NAME (TYPE in1, TYPE in2) { \ / 13 ! UNSIGNED_TYPE ures = static_cast(in1); \ / 14 ! ures OP ## = static_cast(in2); \ / 15 ! TYPE res; \ / 16 ! memcpy(&res, &ures, sizeof(res)); \ / 17 ! return res; \ / 18 !} / 19 ! / 20 !JAVA_INTEGER_OP(+, java_add, jint, juint) { 20 } push %ebp { 20 } movl %esp,%ebp { 20 } subl $24,%esp { 20 } andl $-16,%esp { 20 } movl 8(%ebp),%eax / sym=in1 { 20 } addl 12(%ebp),%eax / sym=in2 { 20 } movl %eax,-16(%ebp) / sym=__1fIjava_add6Fii_i1AEures_ { 20 } subl $4,%esp { 20 } leal -16(%ebp),%ecx / sym=__1fIjava_add6Fii_i1AEures_ { 20 } push $4 { 20 } leal -12(%ebp),%eax / sym=__1fIjava_add6Fii_i1ADres_ { 20 } push %ecx { 20 } push %eax { 20 } call memcpy { 20 } addl $16,%esp / BLOCK: 4, pred: 3, succ: 2, count: 1.000000 { 20 } movl -12(%ebp),%eax / sym=__1fIjava_add6Fii_i1ADres_ { 20 } leave { 20 } ret .size __1cIjava_add6Fii_i_, . - __1cIjava_add6Fii_i_ .CG3: .CG4: { 21 } .align 4 /================================================================================ / FUNCTION __1cNjava_subtract6Fii_i_ / arg0 "in1": 4(%esp), / arg1 "in2": 8(%esp), __1cNjava_subtract6Fii_i_: .CG5: / BLOCK: 3, pred: 1, succ: 4, count: 1.000000 / 21 !JAVA_INTEGER_OP(-, java_subtract, jint, juint) { 21 } push %ebp { 21 } movl %esp,%ebp { 21 } subl $24,%esp { 21 } andl $-16,%esp { 21 } movl 8(%ebp),%eax / sym=in1 { 21 } subl 12(%ebp),%eax / sym=in2 { 21 } movl %eax,-16(%ebp) / sym=__1fNjava_subtract6Fii_i1AEures_ { 21 } subl $4,%esp { 21 } leal -16(%ebp),%ecx / sym=__1fNjava_subtract6Fii_i1AEures_ { 21 } push $4 { 21 } leal -12(%ebp),%eax / sym=__1fNjava_subtract6Fii_i1ADres_ { 21 } push %ecx { 21 } push %eax { 21 } call memcpy { 21 } addl $16,%esp / BLOCK: 4, pred: 3, succ: 2, count: 1.000000 { 21 } movl -12(%ebp),%eax / sym=__1fNjava_subtract6Fii_i1ADres_ { 21 } leave { 21 } ret .size __1cNjava_subtract6Fii_i_, . - __1cNjava_subtract6Fii_i_ .CG6: .CG7: { 22 } .align 4 /================================================================================ / FUNCTION __1cNjava_multiply6Fii_i_ / arg0 "in1": 4(%esp), / arg1 "in2": 8(%esp), __1cNjava_multiply6Fii_i_: .CG8: / BLOCK: 3, pred: 1, succ: 4, count: 1.000000 / 22 !JAVA_INTEGER_OP(*, java_multiply, jint, juint) { 22 } push %ebp { 22 } movl %esp,%ebp { 22 } subl $24,%esp { 22 } andl $-16,%esp { 22 } movl 8(%ebp),%eax / sym=in1 { 22 } imul 12(%ebp),%eax / sym=in2 { 22 } movl %eax,-16(%ebp) / sym=__1fNjava_multiply6Fii_i1AEures_ { 22 } subl $4,%esp { 22 } leal -16(%ebp),%ecx / sym=__1fNjava_multiply6Fii_i1AEures_ { 22 } push $4 { 22 } leal -12(%ebp),%eax / sym=__1fNjava_multiply6Fii_i1ADres_ { 22 } push %ecx { 22 } push %eax { 22 } call memcpy { 22 } addl $16,%esp / BLOCK: 4, pred: 3, succ: 2, count: 1.000000 { 22 } movl -12(%ebp),%eax / sym=__1fNjava_multiply6Fii_i1ADres_ { 22 } leave { 22 } ret .size __1cNjava_multiply6Fii_i_, . - __1cNjava_multiply6Fii_i_ .CG9: .CGA: { 23 } .align 4 /================================================================================ / FUNCTION __1cIjava_add6Fxx_x_ / arg0 "in1": 4(%esp), / arg1 "in2": 12(%esp), __1cIjava_add6Fxx_x_: .CGB: / BLOCK: 3, pred: 1, succ: 4, count: 1.000000 / 23 !JAVA_INTEGER_OP(+, java_add, jlong, julong) { 23 } push %ebp { 23 } movl %esp,%ebp { 23 } subl $24,%esp { 23 } andl $-16,%esp { 23 } movl 8(%ebp),%edx / sym=in1 { 23 } movl 12(%ebp),%eax / sym=in1 { 23 } movl 20(%ebp),%ecx / sym=in2 { 23 } addl 16(%ebp),%edx / sym=in2 { 23 } adcl %ecx,%eax { 23 } movl %edx,-24(%ebp) / sym=__1fIjava_add6Fxx_x1AEures_ { 23 } movl %eax,-20(%ebp) / sym=__1fIjava_add6Fxx_x1AEures_ { 23 } subl $4,%esp { 23 } leal -24(%ebp),%ecx / sym=__1fIjava_add6Fxx_x1AEures_ { 23 } push $8 { 23 } leal -16(%ebp),%eax / sym=__1fIjava_add6Fxx_x1ADres_ { 23 } push %ecx { 23 } push %eax { 23 } call memcpy { 23 } addl $16,%esp / BLOCK: 4, pred: 3, succ: 2, count: 1.000000 { 23 } movl -16(%ebp),%eax / sym=__1fIjava_add6Fxx_x1ADres_ { 23 } movl -12(%ebp),%edx / sym=__1fIjava_add6Fxx_x1ADres_ { 23 } leave { 23 } ret .size __1cIjava_add6Fxx_x_, . - __1cIjava_add6Fxx_x_ .CGC: .CGD: { 24 } .align 4 /================================================================================ / FUNCTION __1cNjava_subtract6Fxx_x_ / arg0 "in1": 4(%esp), / arg1 "in2": 12(%esp), __1cNjava_subtract6Fxx_x_: .CGE: / BLOCK: 3, pred: 1, succ: 4, count: 1.000000 / 24 !JAVA_INTEGER_OP(-, java_subtract, jlong, julong) { 24 } push %ebp { 24 } movl %esp,%ebp { 24 } subl $24,%esp { 24 } andl $-16,%esp { 24 } movl 8(%ebp),%edx / sym=in1 { 24 } movl 12(%ebp),%eax / sym=in1 { 24 } movl 20(%ebp),%ecx / sym=in2 { 24 } subl 16(%ebp),%edx / sym=in2 { 24 } sbbl %ecx,%eax { 24 } movl %edx,-24(%ebp) / sym=__1fNjava_subtract6Fxx_x1AEures_ { 24 } movl %eax,-20(%ebp) / sym=__1fNjava_subtract6Fxx_x1AEures_ { 24 } subl $4,%esp { 24 } leal -24(%ebp),%ecx / sym=__1fNjava_subtract6Fxx_x1AEures_ { 24 } push $8 { 24 } leal -16(%ebp),%eax / sym=__1fNjava_subtract6Fxx_x1ADres_ { 24 } push %ecx { 24 } push %eax { 24 } call memcpy { 24 } addl $16,%esp / BLOCK: 4, pred: 3, succ: 2, count: 1.000000 { 24 } movl -16(%ebp),%eax / sym=__1fNjava_subtract6Fxx_x1ADres_ { 24 } movl -12(%ebp),%edx / sym=__1fNjava_subtract6Fxx_x1ADres_ { 24 } leave { 24 } ret .size __1cNjava_subtract6Fxx_x_, . - __1cNjava_subtract6Fxx_x_ .CGF: .CG10: { 25 } .align 4 /================================================================================ / FUNCTION __1cNjava_multiply6Fxx_x_ / arg0 "in1": 4(%esp), / arg1 "in2": 12(%esp), __1cNjava_multiply6Fxx_x_: .CG11: / BLOCK: 3, pred: 1, succ: 4, count: 1.000000 / 25 !JAVA_INTEGER_OP(*, java_multiply, jlong, julong) { 25 } push %ebp { 25 } movl %esp,%ebp { 25 } push %ebx { 25 } subl $20,%esp { 25 } andl $-16,%esp { 25 } movl 8(%ebp),%ebx / sym=in1 { 25 } movl 16(%ebp),%eax / sym=in2 { 25 } movl 20(%ebp),%ecx / sym=in2 { 25 } imul %ebx,%ecx { 25 } movl 12(%ebp),%edx / sym=in1 { 25 } imul %eax,%edx { 25 } addl %edx,%ecx { 25 } mul %ebx { 25 } addl %ecx,%edx { 25 } movl %eax,-24(%ebp) / sym=__1fNjava_multiply6Fxx_x1AEures_ { 25 } movl %edx,-20(%ebp) / sym=__1fNjava_multiply6Fxx_x1AEures_ { 25 } subl $4,%esp { 25 } leal -24(%ebp),%eax / sym=__1fNjava_multiply6Fxx_x1AEures_ { 25 } push $8 { 25 } leal -16(%ebp),%ecx / sym=__1fNjava_multiply6Fxx_x1ADres_ { 25 } push %eax { 25 } push %ecx { 25 } call memcpy { 25 } addl $16,%esp / BLOCK: 4, pred: 3, succ: 2, count: 1.000000 { 25 } movl -16(%ebp),%eax / sym=__1fNjava_multiply6Fxx_x1ADres_ { 25 } movl -12(%ebp),%edx / sym=__1fNjava_multiply6Fxx_x1ADres_ { 25 } leal -4(%ebp),%esp { 25 } pop %ebx { 25 } leave { 25 } ret .size __1cNjava_multiply6Fxx_x_, . - __1cNjava_multiply6Fxx_x_ .CG12: .CG13: .section .data,"aw" Ddata.data: / Offset 0 .section .bss,"aw" Bbss.bss: .section .bssf,"aw" .section .rodata,"a" Drodata.rodata: / Offset 0 .section .picdata,"aw" Dpicdata.picdata: / Offset 0 .section .lbss,"awh" .type Blbss.lbss, @object Blbss.lbss: .section .ldata,"awh" Dldata.ldata: / Offset 0 .type Dldata.ldata, @object .section .lrodata,"ah" Dlrodata.lrodata: / Offset 0 .type Dlrodata.lrodata, @object .section .annotate / ANNOTATION: header .string "anotate" .2byte 4 .2byte 0 .4byte .CG1 - .CG0 .CG0: / ANNOTATION: Module .2byte 0 .2byte .CG15 - .CG14 .CG14: .4byte .text .4byte .CG13 - .text .CG15: / ANNOTATION: Function .2byte 1 .2byte .CG17 - .CG16 .CG16: .4byte .CG2 .4byte .CG4 - .CG2 .4byte 512 .4byte .CG5 .4byte .CG7 - .CG5 .4byte 512 .4byte .CG8 .4byte .CGA - .CG8 .4byte 512 .4byte .CGB .4byte .CGD - .CGB .4byte 512 .4byte .CGE .4byte .CG10 - .CGE .4byte 512 .4byte .CG11 .4byte .CG13 - .CG11 .4byte 512 .CG17: .CG1: / ANNOTATION: end / Begin sdCreateSection : .debug_loc / Section Info: link_name/strtab=, entsize=0x1, adralign=0x1, flags=0x0 / Section Data Blocks: .section .debug_loc / End sdCreateSection / Begin sdCreateSection : .debug_info / Section Info: link_name/strtab=, entsize=0x1, adralign=0x1, flags=0x0 / Section Data Blocks: / reloc[0]: knd=2, off=6, siz=4, lab1=.debug_abbrev, lab2=, loff=0 / reloc[1]: knd=2, off=275, siz=4, lab1=.debug_line, lab2=, loff=0 .section .debug_info .byte 0x14,0x01,0x00,0x00,0x02,0x00 .4byte .debug_abbrev .byte 0x04,0x01 .ascii "mod_arith.cpp\0" .byte 0x04 .ascii "/net/usr.work/d045726/tmp/8145096-javaArith/\0" .ascii " /net/sapmnt.global/tools/compiler/SS12u1-Mar2011/prod/bin/CC -xO3 -S -xs mod_arith.cpp\0" .ascii "ptf;ptx;ptk;s;;O;R=5.10<>;A=2;backend;raw;cd;\0" .ascii "DBG_GEN 5.2.7\0" .4byte .debug_line .byte 0x00 / End sdCreateSection / Begin sdCreateSection : .debug_line / Section Info: link_name/strtab=, entsize=0x1, adralign=0x1, flags=0x0 / Section Data Blocks: .section .debug_line .byte 0x54,0x00,0x00,0x00,0x02,0x00,0x4e,0x00 .byte 0x00,0x00,0x01,0x00,0xff,0x04,0x0a,0x00 .byte 0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x01 .byte 0x2f,0x6e,0x65,0x74,0x2f,0x75,0x73,0x72 .byte 0x2e,0x77,0x6f,0x72,0x6b,0x2f,0x64,0x30 .byte 0x34,0x35,0x37,0x32,0x36,0x2f,0x74,0x6d .byte 0x70,0x2f,0x38,0x31,0x34,0x35,0x30,0x39 .byte 0x36,0x2d,0x6a,0x61,0x76,0x61,0x41,0x72 .byte 0x69,0x74,0x68,0x2f,0x00,0x00,0x6d,0x6f .byte 0x64,0x5f,0x61,0x72,0x69,0x74,0x68,0x2e .byte 0x63,0x70,0x70,0x00,0x01,0x00,0x00,0x00 / End sdCreateSection / Begin sdCreateSection : .debug_abbrev / Section Info: link_name/strtab=, entsize=0x1, adralign=0x1, flags=0x0 / Section Data Blocks: .section .debug_abbrev .byte 0x01,0x11,0x00,0x03,0x08,0x13,0x0b,0x1b .byte 0x08,0x85,0x44,0x08,0x87,0x44,0x08,0x25 .byte 0x08,0x10,0x06,0x00,0x00,0x00 / End sdCreateSection