view doc/disas_examples/ppc64.elfabi.disas @ 327:c0390dc85a07

- doc: added disassembly examples for many platforms and calling conventions, for reference
author Tassilo Philipp
date Fri, 22 Nov 2019 23:08:59 +0100
parents
children 74c056b597b7
line wrap: on
line source

; #include <stdlib.h>
; 
; void leaf_call(int b, int c, int d, int e, int f, int g, int h)
; {
; }
; 
; void nonleaf_call(int a, int b, int c, int d, int e, int f, int g, int h)
; {
; 	/* use some local data */
; 	*(char*)alloca(220) = 'L';
; 	leaf_call(b, c, d, e, f, g, h);
; }
; 
; int main()
; {
; 	nonleaf_call(0, 1, 2, 3, 4, 5, 6, 7);
; 	return 0;
; }



; output from freebsd-11.0-ppc64 w/ gcc 4.2.1

0000000000000000 <.leaf_call>:
   0:	fb e1 ff f8 	std     r31,-8(r1)
   4:	f8 21 ff c1 	stdu    r1,-64(r1)
   8:	7c 3f 0b 78 	mr      r31,r1
   c:	7c 60 1b 78 	mr      r0,r3
  10:	7c 8b 23 78 	mr      r11,r4
  14:	7c aa 2b 78 	mr      r10,r5
  18:	90 1f 00 70 	stw     r0,112(r31)
  1c:	91 7f 00 78 	stw     r11,120(r31)
  20:	91 5f 00 80 	stw     r10,128(r31)
  24:	90 df 00 88 	stw     r6,136(r31)
  28:	90 ff 00 90 	stw     r7,144(r31)
  2c:	91 1f 00 98 	stw     r8,152(r31)
  30:	91 3f 00 a0 	stw     r9,160(r31)
  34:	e8 21 00 00 	ld      r1,0(r1)
  38:	eb e1 ff f8 	ld      r31,-8(r1)
  3c:	4e 80 00 20 	blr
	...
  48:	80 01 00 01 	lwz     r0,1(r1)

000000000000004c <.nonleaf_call>:
  4c:	7c 08 02 a6 	mflr    r0
  50:	fb e1 ff f8 	std     r31,-8(r1)
  54:	f8 01 00 10 	std     r0,16(r1)
  58:	f8 21 ff 71 	stdu    r1,-144(r1)
  5c:	7c 3f 0b 78 	mr      r31,r1
  60:	7c 60 1b 78 	mr      r0,r3
  64:	7c 8b 23 78 	mr      r11,r4
  68:	90 1f 00 c0 	stw     r0,192(r31)
  6c:	91 7f 00 c8 	stw     r11,200(r31)
  70:	90 bf 00 d0 	stw     r5,208(r31)
  74:	90 df 00 d8 	stw     r6,216(r31)
  78:	90 ff 00 e0 	stw     r7,224(r31)
  7c:	91 1f 00 e8 	stw     r8,232(r31)
  80:	91 3f 00 f0 	stw     r9,240(r31)
  84:	91 5f 00 f8 	stw     r10,248(r31)
  88:	e8 01 00 00 	ld      r0,0(r1)
  8c:	f8 01 ff 11 	stdu    r0,-240(r1)
  90:	39 21 00 70 	addi    r9,r1,112
  94:	f9 3f 00 70 	std     r9,112(r31)
  98:	e9 3f 00 70 	ld      r9,112(r31)
  9c:	38 09 00 0f 	addi    r0,r9,15
  a0:	78 00 e1 02 	rldicl  r0,r0,60,4
  a4:	78 00 26 e4 	rldicr  r0,r0,4,59
  a8:	f8 1f 00 70 	std     r0,112(r31)
  ac:	e9 3f 00 70 	ld      r9,112(r31)
  b0:	38 00 00 4c 	li      r0,76
  b4:	98 09 00 00 	stb     r0,0(r9)
  b8:	80 1f 00 c8 	lwz     r0,200(r31)
  bc:	7c 08 07 b4 	extsw   r8,r0
  c0:	80 1f 00 d0 	lwz     r0,208(r31)
  c4:	7c 07 07 b4 	extsw   r7,r0
  c8:	80 1f 00 d8 	lwz     r0,216(r31)
  cc:	7c 06 07 b4 	extsw   r6,r0
  d0:	80 1f 00 e0 	lwz     r0,224(r31)
  d4:	7c 09 07 b4 	extsw   r9,r0
  d8:	80 1f 00 e8 	lwz     r0,232(r31)
  dc:	7c 0b 07 b4 	extsw   r11,r0
  e0:	80 1f 00 f0 	lwz     r0,240(r31)
  e4:	7c 0a 07 b4 	extsw   r10,r0
  e8:	80 1f 00 f8 	lwz     r0,248(r31)
  ec:	7c 00 07 b4 	extsw   r0,r0
  f0:	7d 03 43 78 	mr      r3,r8
  f4:	7c e4 3b 78 	mr      r4,r7
  f8:	7c c5 33 78 	mr      r5,r6
  fc:	7d 26 4b 78 	mr      r6,r9
 100:	7d 67 5b 78 	mr      r7,r11
 104:	7d 48 53 78 	mr      r8,r10
 108:	7c 09 03 78 	mr      r9,r0
 10c:	48 00 00 01 	bl      10c <.nonleaf_call+0xc0>
 110:	e8 21 00 00 	ld      r1,0(r1)
 114:	e8 01 00 10 	ld      r0,16(r1)
 118:	7c 08 03 a6 	mtlr    r0
 11c:	eb e1 ff f8 	ld      r31,-8(r1)
 120:	4e 80 00 20 	blr
 124:	00 00 00 00 	.long 0x0
 128:	00 00 00 01 	.long 0x1
 12c:	80 01 00 01 	lwz     r0,1(r1)

0000000000000130 <.main>:
 130:	7c 08 02 a6 	mflr    r0
 134:	fb e1 ff f8 	std     r31,-8(r1)
 138:	f8 01 00 10 	std     r0,16(r1)
 13c:	f8 21 ff 81 	stdu    r1,-128(r1)
 140:	7c 3f 0b 78 	mr      r31,r1
 144:	38 60 00 00 	li      r3,0
 148:	38 80 00 01 	li      r4,1
 14c:	38 a0 00 02 	li      r5,2
 150:	38 c0 00 03 	li      r6,3
 154:	38 e0 00 04 	li      r7,4
 158:	39 00 00 05 	li      r8,5
 15c:	39 20 00 06 	li      r9,6
 160:	39 40 00 07 	li      r10,7
 164:	48 00 00 01 	bl      164 <.main+0x34>
 168:	38 00 00 00 	li      r0,0
 16c:	7c 03 03 78 	mr      r3,r0
 170:	e8 21 00 00 	ld      r1,0(r1)
 174:	e8 01 00 10 	ld      r0,16(r1)
 178:	7c 08 03 a6 	mtlr    r0
 17c:	eb e1 ff f8 	ld      r31,-8(r1)
 180:	4e 80 00 20 	blr
 184:	00 00 00 00 	.long 0x0
 188:	00 00 00 01 	.long 0x1
 18c:	80 01 00 01 	lwz     r0,1(r1)

; vim: ft=asm