From f66a44ed97f792596c84f1110e1d563ac8146766 Mon Sep 17 00:00:00 2001 From: Fabrice Desclaux Date: Mon, 13 Feb 2017 11:24:32 +0100 Subject: Tests: add asm human --- example/samples/human.S | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 example/samples/human.S (limited to 'example/samples') diff --git a/example/samples/human.S b/example/samples/human.S new file mode 100644 index 00000000..750aa5b7 --- /dev/null +++ b/example/samples/human.S @@ -0,0 +1,41 @@ + ;; Walk a human link list and print its information +main: + TEST RDI, RDI + JZ end + + PUSH RBX + MOV RBX, RDI +loop: + LEA RSI, QWORD PTR [RBX+0x10] + LEA RDI, QWORD PTR [name-_+RIP] + XOR EAX, EAX + CALL printf + + MOVZX ESI, WORD PTR [RBX+0x8] + LEA RDI, QWORD PTR [age-_+RIP] + XOR EAX, EAX + CALL printf + + MOV ESI, DWORD PTR [RBX+0xC] + XOR EAX, EAX + LEA RDI, QWORD PTR [height-_+RIP] + CALL printf + + MOV RBX, QWORD PTR [RBX] + TEST RBX, RBX + JNZ loop + + POP RBX +end: + RET + +printf: + ;; Dummy printf + RET + +age: +.string "Age: %d\n" +height: +.string "Height: %d\n" +name: +.string "Name: %s\n" -- cgit 1.4.1