char c; void upcase() { if ((c>='a')&&(c<='z')) c=c-0x20; } gcc -S -b m6811 upcase.c upcase: ldab c cmpb #96 bls .L2 ldab c cmpb #122 bhi .L2 ldab c addb #-32 stab c .L2: rts gcc -S -b m6811 upcase.c -O upcase: ldab c addb #-97 cmpb #25 bhi .L2 ldab c addb #-32 stab c .L2: rts bcc -S upcase.c mov al,[_c] cmp al,*$61 jb .1 .3: mov al,[_c] cmp al,*$7A ja .1 .2: mov al,[_c] xor ah,ah add ax,*-$20 mov [_c],al .1: ret in /usr/lib/bcc/i86/rules.86 # Rules for comparing short values mov %[ax|bx]3,%1[%4] cmp %[ax|bx]3,%[#|*]0%2 = cmp word ptr %1[%4],%0%2 mov al,%1[%4] cmp al,%[#|*]0%2 = cmp byte ptr %1[%4],%0%2 mov %[ax|bx]3,%[ax|bx|cx|dx|si|di]2 cmp %[ax|bx]3,%1 = cmp %2,%1 bcc -S upcase.c -O _upcase: cmp byte ptr [_c],*$61 jb .1 .3: cmp byte ptr [_c],*$7A ja .1 .2: add byte ptr [_c],*-$20 .1: ret gcc -S -b m68k-motorola upcase.c [4:56pm linserv] more upcase.s file "upcase.c" text even global upcase upcase: pea (%fp) move.l %sp,%fp cmp.b c,&96 ble L%L2 cmp.b c,&122 bgt L%L2 add.b &-32,c L%L2: unlk %fp rts comm c,1 gcc -S -b m68k-coff upcase.c [4:58pm linserv] !mo more upcase.s .file "upcase.c" .text .even .globl upcase upcase: link.w %a6,#0 cmp.b #96,c jble .L2 cmp.b #122,c jbgt .L2 add.b #-32,c .L2: unlk %a6 rts .comm c,2 gcc -S -b m68k-motorola upcase.c -O [5:07pm linserv] more upcase.s file "upcase.c" text even global upcase upcase: pea (%fp) move.l %sp,%fp mov.b c,%d0 add.b &-97,%d0 cmp.b %d0,&25 bhi L%L2 add.b &-32,c L%L2: unlk %fp rts comm c,1 gcc -S -b m68k-coff upcase.c -O [8:21pm linserv] more upcase.s .file "upcase.c" .text .even .globl upcase upcase: link.w %a6,#0 move.b c,%d0 add.b #-97,%d0 cmp.b #25,%d0 jbhi .L2 add.b #-32,c .L2: unlk %a6 rts .comm c,2 gcc -S -b i686-pc-linux-gnu upcase.c [8:31pm linserv] more upcase.s .file "upcase.c" .text .align 16 .globl upcase .type upcase,@function upcase: pushl %ebp movl %esp, %ebp cmpb $96, c jle .L2 cmpb $122, c jg .L2 subb $32, c .L2: popl %ebp ret .Lfe1: .size upcase,.Lfe1-upcase .comm c,1,1 .ident "GCC: (GNU) 3.0.3" gcc -S -b i686-pc-linux-gnu upcase.c -O [8:32pm linserv] mv upcase.s upcase.i686.O [8:32pm linserv] more upcase.i686.O .file "upcase.c" .text .align 16 .globl upcase .type upcase,@function upcase: pushl %ebp movl %esp, %ebp movzbl c, %edx movb %dl, %al subb $97, %al cmpb $25, %al ja .L2 addb $65, %al movb %al, c .L2: popl %ebp ret .Lfe1: .size upcase,.Lfe1-upcase .comm c,1,1 .ident "GCC: (GNU) 3.0.3"