1*585a86b1SNiccolò Izzo/* 2*585a86b1SNiccolò Izzo * Purpose: demonstrate the succesful operation of the register save mechanism, 3*585a86b1SNiccolò Izzo * in which the caller saves the registers that will be clobbered, and restores 4*585a86b1SNiccolò Izzo * them after the call. 5*585a86b1SNiccolò Izzo */ 6*585a86b1SNiccolò Izzo 7*585a86b1SNiccolò Izzo .text 8*585a86b1SNiccolò Izzo .globl _start 9*585a86b1SNiccolò Izzo 10*585a86b1SNiccolò Izzo_start: 11*585a86b1SNiccolò Izzo allocframe(#8) 12*585a86b1SNiccolò Izzo { 13*585a86b1SNiccolò Izzo r16 = #47 14*585a86b1SNiccolò Izzo r17 = #155 15*585a86b1SNiccolò Izzo } 16*585a86b1SNiccolò Izzo memd(sp+#0) = r17:16 17*585a86b1SNiccolò Izzo { 18*585a86b1SNiccolò Izzo r16 = #255 19*585a86b1SNiccolò Izzo r17 = #42 20*585a86b1SNiccolò Izzo } 21*585a86b1SNiccolò Izzo { 22*585a86b1SNiccolò Izzo deallocframe 23*585a86b1SNiccolò Izzo r17:16 = memd(sp+#0) 24*585a86b1SNiccolò Izzo } 25*585a86b1SNiccolò Izzo { 26*585a86b1SNiccolò Izzo p0 = cmp.eq(r16, #47) 27*585a86b1SNiccolò Izzo p0 = cmp.eq(r17, #155); if (p0.new) jump:t pass 28*585a86b1SNiccolò Izzo jump fail 29*585a86b1SNiccolò Izzo } 30