Commit b2f4944
Changed files (5)
assignments
assignments/3/main.c
@@ -2,7 +2,20 @@
int main(int argc, char *argv[])
{
- for (int i = 0; i < 10; i++) {
- printf("%d\n", i);
+ int number = 0;
+ int max = -1;
+ int min = -1;
+
+ while(scanf("%d", &number) != EOF) {
+ if (max == -1 || number > max) {
+ max = number;
+ }
+ if (min == -1 || number < min) {
+ min = number;
+ }
+
+ number = 0;
}
+
+ printf("Max: %d\nMin: %d\n", max, min);
}
assignments/3/main.exe
Binary file
assignments/3/main.s
@@ -6,7 +6,9 @@
.text
.section .rodata.str1.1,"aMS",@progbits,1
.LC0:
- .string "%d\n"
+ .string "%d"
+.LC1:
+ .string "Max: %d\nMin: %d\n"
.section .text.startup,"ax",@progbits
.p2align 4
.globl main
@@ -14,28 +16,74 @@
main:
.LFB11:
.cfi_startproc
- pushq %rbx #
+ pushq %r12 #
.cfi_def_cfa_offset 16
- .cfi_offset 3, -16
-# main.c:5: for (int i = 0; i < 10; i++) {
- xorl %ebx, %ebx # i
- .p2align 4
+ .cfi_offset 12, -16
+ pushq %rbp #
+ .cfi_def_cfa_offset 24
+ .cfi_offset 6, -24
+# main.c:7: int min = -1;
+ movl $-1, %ebp #, min
+# main.c:4: {
+ pushq %rbx #
+ .cfi_def_cfa_offset 32
+ .cfi_offset 3, -32
+# main.c:6: int max = -1;
+ movl $-1, %ebx #, max
+# main.c:4: {
+ subq $16, %rsp #,
+ .cfi_def_cfa_offset 48
+ leaq 12(%rsp), %r12 #, tmp107
+# main.c:9: while(scanf("%d", &number) != EOF) {
+ jmp .L2 #
+ .p2align 4,,10
.p2align 3
+.L5:
+# main.c:10: if (max == -1 || number > max) {
+ movl 12(%rsp), %eax # number, pretmp_20
+# main.c:10: if (max == -1 || number > max) {
+ cmpl %eax, %ebx # pretmp_20, max
+ movl %eax, %edx # pretmp_20, tmp108
+ cmovge %ebx, %edx # max,, tmp108
+ cmpl $-1, %ebx #, max
+ movl %edx, %ebx # tmp108, tmp108
+# main.c:13: if (min == -1 || number < min) {
+ movl %eax, %edx # pretmp_20, tmp110
+# main.c:10: if (max == -1 || number > max) {
+ cmove %eax, %ebx # tmp108,, pretmp_20, tmp108
+# main.c:13: if (min == -1 || number < min) {
+ cmpl %eax, %ebp # pretmp_20, min
+ cmovle %ebp, %edx # min,, tmp110
+ cmpl $-1, %ebp #, min
+ cmovne %edx, %eax # tmp110,, pretmp_20
+ movl %eax, %ebp # pretmp_20, min
.L2:
-# main.c:6: printf("%d\n", i);
- movl %ebx, %esi # i,
+# main.c:9: while(scanf("%d", &number) != EOF) {
+ xorl %eax, %eax #
+ movq %r12, %rsi # tmp107,
movl $.LC0, %edi #,
+# main.c:5: int number = 0;
+ movl $0, 12(%rsp) #, number
+# main.c:9: while(scanf("%d", &number) != EOF) {
+ call __isoc99_scanf #
+# main.c:9: while(scanf("%d", &number) != EOF) {
+ cmpl $-1, %eax #, tmp112
+ jne .L5 #,
+# main.c:20: printf("Max: %d\nMin: %d\n", max, min);
+ movl %ebp, %edx # min,
+ movl %ebx, %esi # max,
+ movl $.LC1, %edi #,
xorl %eax, %eax #
-# main.c:5: for (int i = 0; i < 10; i++) {
- addl $1, %ebx #, i
-# main.c:6: printf("%d\n", i);
call printf #
-# main.c:5: for (int i = 0; i < 10; i++) {
- cmpl $10, %ebx #, i
- jne .L2 #,
-# main.c:8: }
+# main.c:21: }
+ addq $16, %rsp #,
+ .cfi_def_cfa_offset 32
xorl %eax, %eax #
popq %rbx #
+ .cfi_def_cfa_offset 24
+ popq %rbp #
+ .cfi_def_cfa_offset 16
+ popq %r12 #
.cfi_def_cfa_offset 8
ret
.cfi_endproc
assignments/3/Makefile
@@ -1,4 +1,13 @@
-default: main.s
+default: main.s main.exe numbers.txt
main.s: main.c
gcc -S -fverbose-asm -O2 main.c
+
+main.exe: main.c
+ gcc -o main.exe main.c
+
+numbers.txt:
+ ruby -e '100.times { IO.write("numbers.txt", "#{rand(100_000_000)}\n", mode: "a+") }'
+
+run: main.exe numbers.txt
+ ./main.exe < numbers.txt
assignments/3/numbers.txt
@@ -0,0 +1,100 @@
+92466815
+74269497
+87050963
+25751600
+8977277
+77496058
+30567041
+5491932
+73316075
+62877755
+45131658
+23209575
+52124207
+68541577
+96103422
+62574138
+46543308
+69316651
+80018420
+75836516
+58878100
+6148427
+44641940
+9142229
+61646141
+14736493
+17563644
+61133076
+48271908
+54418408
+84568705
+15645588
+57940938
+10026192
+8379555
+85693099
+8887701
+51277614
+86893573
+29301811
+9482011
+16525518
+55418577
+85246213
+99702148
+43592251
+89572153
+47687764
+16903422
+54985874
+21405561
+38938206
+40252034
+77770613
+84641140
+15944022
+20266861
+24590849
+73021859
+32635053
+65623867
+46364251
+89109658
+13712279
+86114503
+5544717
+63892
+66769336
+41908253
+92439154
+39785844
+39528483
+77990612
+4983638
+47246349
+32947081
+94376839
+1540652
+2165773
+60160647
+16783606
+35466343
+37097791
+75362813
+92732163
+62378631
+73101996
+53838971
+69587672
+20567356
+42877851
+57101803
+62146312
+64184386
+6339851
+57935937
+55319705
+19904225
+90504632
+87909544