| ソース行数 | .exeのサイズ | ||
| HL-9a | 772行 | 20.0KB | |
| HL-16b | 1287行 | 28.5KB | |
| HL-22b | 1440行 | 45.5KB | |
| (合計) | (3499行) | (94.0KB) | |
| HLX-001a | 2993行 | 40.0KB | アセンブラ出力ができません |
| HLX-002b | 3440行 | 45.5KB |
| (1) x86, 速度優先 | (2) x86, サイズ優先 | (3) x64_win, 速度優先 | (4) x64_win, サイズ優先 | |
| grd.c | 116バイト | 120バイト | 169バイト | 174バイト |
| mandel.c | 602バイト | 408バイト | 628バイト | 485バイト |
| maze.c | 1383バイト | 957バイト | 1438バイト | 1161バイト |
| kcube.c | 3360バイト | 2020バイト | 3735バイト | 2715バイト |
| invader.c | 1845バイト | 1324バイト | 1926バイト | 1520バイト |
>print 1+2+3 6
>run maze.c
>for (i = 1; i <= 9; i++) { for (j = 1; j <= 9; j++) { printf("%2d ", i * j); } printf("\n"); }
1 2 3 4 5 6 7 8 9
2 4 6 8 10 12 14 16 18
3 6 9 12 15 18 21 24 27
4 8 12 16 20 24 28 32 36
5 10 15 20 25 30 35 40 45
6 12 18 24 30 36 42 48 54
7 14 21 28 35 42 49 56 63
8 16 24 32 40 48 56 64 72
9 18 27 36 45 54 63 72 81prompt>hlx002_x86_win -asm grd.c > grd_x86_win.nas prompt>nasm -f win32 -o grd_x86_win.obj grd_x86_win.nas prompt>gcc -Wl,-s -o grd_x86_win.exe grd_x86_win.obj sub_x86_win.obj -lgdi32 これで「grd_x86_win.exe」ができあがります!
prompt>hlx002_x64_win -asm "-cmd:codemode 1" grd.c > grd_x86_win.nas prompt>hlx002_x86_win -asm "-cmd:codemode 2" grd.c > grd_x64_win.nas
prompt>gcc -m32 -Wno-unused-function -O3 -I (acl-winへのパス) -c -DAARCH_X86 -o sub_x86_win.obj sub.c prompt>gcc -m64 -Wno-unused-function -O3 -I (acl-winへのパス) -c -DAARCH_X64 -o sub_x64_win.obj sub.c
#include <acl.c>
#ifdef AUSE_HLX
regVarOpt(0, i, x, y, xx, yy, dd, d0, d1, d2, d3); // for spd.
regVarOpt(1, xx, yy, dd, x, y, d0, d1, d2, d3); // for siz.
#endif
void aMain()
{
AWindow *w;
int i, x, y, xx, yy, d0, d1, d2, d3, d, dd;
w = aOpenWin(752, 496, "maze", 1);
aFillRect0(w, 752, 496, 0, 0, 0x00ff00);
aFillRect0(w, 16, 16, 16, 16, 0x000000);
for (i = 0; i < 1000000; i++) {
x = ((aXorShift32() & 0x7fffffff) % 23) * 2 + 1;
y = ((aXorShift32() & 0x7fffffff) % 15) * 2 + 1;
if (aGetPix(w, x * 16, y * 16) == 0x000000) {
for (;;) {
d0 = d1 = d2 = d3 = 0;
xx = x * 16;
yy = y * 16;
aFillRect0(w, 16, 16, xx, yy, 0x000000);
if (x != 45) { d0 = (aGetPix(w, xx + 16, yy) != 0) * (aGetPix(w, xx + 32, yy) != 0); }
if (x != 1) { d1 = (aGetPix(w, xx - 16, yy) != 0) * (aGetPix(w, xx - 32, yy) != 0); }
if (y != 29) { d2 = (aGetPix(w, xx, yy + 16) != 0) * (aGetPix(w, xx, yy + 32) != 0); }
if (y != 1) { d3 = (aGetPix(w, xx, yy - 16) != 0) * (aGetPix(w, xx, yy - 32) != 0); }
d = d0 + d1 + d2 + d3;
if (d == 0) break;
dd = (aXorShift32() & 0x7fffffff) % d;
if (d0) { if (dd == 0) { aFillRect0(w, 16, 16, xx + 16, yy, 0x000000); x = x + 2; } dd = dd - 1; }
if (d1) { if (dd == 0) { aFillRect0(w, 16, 16, xx - 16, yy, 0x000000); x = x - 2; } dd = dd - 1; }
if (d2) { if (dd == 0) { aFillRect0(w, 16, 16, xx, yy + 16, 0x000000); y = y + 2; } dd = dd - 1; }
if (d3) { if (dd == 0) { aFillRect0(w, 16, 16, xx, yy - 16, 0x000000); y = y - 2; } dd = dd - 1; }
}
}
}
aWait(-1);
}
#include <acl.c>
// AInt inputInt() { int i; scanf("%d", &i); return i; }
void aMain()
{
int a[12] = { 13, 40, 33, 62, 13, 42, 63, 23, 52, 3, 32, 53 };
int y, m, w, d, d1;
printf("year=? "); y = inputInt();
printf("month=? "); m = inputInt() - 1;
if (y % 4 == 0) {
if (y % 400 == 0) { a[1] = 41; }
if (y % 100 != 0) { a[1] = 41; }
}
printf("\n %.3s %4d\n", "JanFebMarAprMayJunJulAugSepOctNovDec" + m * 3, y);
printf("\nSun Mon Tue Wed Thu Fri Sat\n");
w = y;
if (m <= 1) { w = w - 1; }
w = (w + w / 4 - w / 100 + w / 400 + a[m] / 10) % 7;
for (d = 0; d < w; d++) {
printf(" ");
}
d1 = (a[m] % 10) + 28;
for (d = 1; d <= d1; d++) {
printf(" %2d ", d);
w = (w + 1) % 7;
if (w == 0) { printf("\n"); }
}
if (w > 0) { printf("\n"); }
}
>run calendar.c
year=? 2021
month=? 9
Sep 2021
Sun Mon Tue Wed Thu Fri Sat
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30| コメント | お名前 | NameLink | |