#include <time.h>
#include <stdio.h>
int main(void) {
int x;
int n = 32768;
//for(; scanf("%d",&x) > 0 && x != 42; printf("%d\n", x));
printf("Wait for %d lines with 32768 pixels each...\n", n
); for(x = 0; x < n; ++ x) {
__asm(
" movl $0x7FFF0000,%eax;"
" movl $0x00007FFF,%ecx;"
" addw %ax,%ax;"
" subl %eax,%ecx;"
" sbbl %ebx,%ebx;"
" subw %ax,%cx;"
" sbbw %bx,%bx;"
" xorl %ebx,%ecx;"
" addw %bx,%cx;"
" subl %ebx,%ecx;"
" orl $0x000010001,%ebx;"
" andl $0x07FFF7FFF,%ebx;"
" movl %ecx,%edx;"
" rorl $16,%edx;"
" movl %edx,%edi;"
" addw %cx,%dx;"
" subl %ecx,%edx;"
" sbbl %esi,%esi;"
" subw %cx,%dx;"
" sbbw %si,%si;"
" movswl %si,%esi;"
" andl %esi,%ecx;"
" notl %esi;"
" andl %esi,%edi;"
" orl %edi,%ecx;"
" movl %ecx,%edx;"
" shll $16,%ecx;"
" movw %dx,%cx;"
" shrw $1,%dx;"
" notw %si;"
"Step:;"
//" movl %edx,%edi;"
" shldl $16,%edx,%edi;"
" addw %di,%dx;"
" cmpw %dx,%cx;"
" sbbl %edi,%edi;"
" andw %cx,%di;"
" subw %di,%dx;"
" sarl $16,%edi;"
" orl %esi,%edi;"
" andl %ebx,%edi;"
" addl %edi,%eax;"
" andl $0x7FFF7FFF,%eax;"
" subl $0x00010000,%ecx;"
" jns Step;");
}
time_t finish
= time(0) - start
; struct tm tstruct;
char buf[80];
strftime(buf
, sizeof(buf
), "Elapsed time is %S seconds", &tstruct
); return 0;
}
I2luY2x1ZGUgPHRpbWUuaD4KI2luY2x1ZGUgPHN0ZGlvLmg+CgppbnQgbWFpbih2b2lkKSB7IAoJaW50IHg7CglpbnQgbiA9IDMyNzY4OwoJLy9mb3IoOyBzY2FuZigiJWQiLCZ4KSA+IDAgJiYgeCAhPSA0MjsgcHJpbnRmKCIlZFxuIiwgeCkpOwoJcHJpbnRmKCJXYWl0IGZvciAlZCBsaW5lcyB3aXRoIDMyNzY4IHBpeGVscyBlYWNoLi4uXG4iLCBuKTsKICAgIHRpbWVfdCAgICAgc3RhcnQgPSB0aW1lKDApOwogICAgZm9yKHggPSAwOyB4IDwgbjsgKysgeCkgewoJX19hc20oCiIJbW92bAkkMHg3RkZGMDAwMCwlZWF4OyIKIgltb3ZsCSQweDAwMDA3RkZGLCVlY3g7IgoiCWFkZHcJJWF4LCVheDsiCiIJc3VibAklZWF4LCVlY3g7IgoiCXNiYmwJJWVieCwlZWJ4OyIKIglzdWJ3CSVheCwlY3g7IgoiCXNiYncJJWJ4LCVieDsiCiIJeG9ybAklZWJ4LCVlY3g7IgoiCWFkZHcJJWJ4LCVjeDsiCiIJc3VibAklZWJ4LCVlY3g7IgoiCW9ybAkkMHgwMDAwMTAwMDEsJWVieDsiCiIJYW5kbAkkMHgwN0ZGRjdGRkYsJWVieDsiCiIJbW92bAklZWN4LCVlZHg7IgoiCXJvcmwJJDE2LCVlZHg7IgoiCW1vdmwJJWVkeCwlZWRpOyIKIglhZGR3CSVjeCwlZHg7IgoiCXN1YmwJJWVjeCwlZWR4OyIKIglzYmJsCSVlc2ksJWVzaTsiCiIJc3VidwklY3gsJWR4OyIKIglzYmJ3CSVzaSwlc2k7IgoiCW1vdnN3bAklc2ksJWVzaTsiCiIJYW5kbAklZXNpLCVlY3g7IgoiCW5vdGwJJWVzaTsiCiIJYW5kbAklZXNpLCVlZGk7IgoiCW9ybAklZWRpLCVlY3g7IgoiCW1vdmwJJWVjeCwlZWR4OyIKIglzaGxsCSQxNiwlZWN4OyIKIgltb3Z3CSVkeCwlY3g7IgoiCXNocncJJDEsJWR4OyIKIglub3R3CSVzaTsiCiJTdGVwOjsiCi8vIgltb3ZsCSVlZHgsJWVkaTsiCiIJc2hsZGwJJDE2LCVlZHgsJWVkaTsiCiIJYWRkdwklZGksJWR4OyIKIgljbXB3CSVkeCwlY3g7IgoiCXNiYmwJJWVkaSwlZWRpOyIKIglhbmR3CSVjeCwlZGk7IgoiCXN1YncJJWRpLCVkeDsiCiIJc2FybAkkMTYsJWVkaTsiCiIJb3JsCSVlc2ksJWVkaTsiCiIJYW5kbAklZWJ4LCVlZGk7IgoiCWFkZGwJJWVkaSwlZWF4OyIKIglhbmRsCSQweDdGRkY3RkZGLCVlYXg7IgoiCXN1YmwJJDB4MDAwMTAwMDAsJWVjeDsiCiIJam5zCVN0ZXA7Iik7Cgl9CiAgICB0aW1lX3QgICAgIGZpbmlzaCA9IHRpbWUoMCkgLSBzdGFydDsKICAgIHN0cnVjdCB0bSAgdHN0cnVjdDsKICAgIGNoYXIgICAgICAgYnVmWzgwXTsKICAgIHRzdHJ1Y3QgPSAqbG9jYWx0aW1lKCZmaW5pc2gpOwogICAgc3RyZnRpbWUoYnVmLCBzaXplb2YoYnVmKSwgIkVsYXBzZWQgdGltZSBpcyAlUyBzZWNvbmRzIiwgJnRzdHJ1Y3QpOwogICAgcHJpbnRmKCIlc1xuIiwgYnVmKTsKCXJldHVybiAwOwp9