DosPrompt>hl9 HL9>casm 1 HL9>pr 0:<10 LdImm32(R01, 0); CmpJmpGrtEquImm32(R01, 10, 2); Label(3); ApiPrIntReg32(R01); Label(4); AddShtImm32(R01, 1); CmpJmpLesThnImm32(R01, 10, 3); Label(2); End(); HL9>
DosPrompt>gcc -m32 -O3 -DAArch_X86 -DAGraph_Win -Iacl1/ -include casm32.c -o t0004.exe t0004.c -lgdi32 -lwinmm DosPrompt>t0004 0123456789 DosPrompt>
HL9>casm 1
HL9>AWin *w = aOpenWin(256, 256, "gradation"); c=0; [y=0:<256] { [x=0:<256] { aSetPix(w, x, y, c); c += 256; }}
LdPtrImm(P02, "gradation");
LdImm32(R00, 256)
LdImm32(R01, 256)
ApiOpenWinReg32(P03, R01, R00, P02);
CpyPtr(P04, P03);
LdImm32(R02, 0);
LdImm32(R03, 0);
CmpJmpGrtEquImm32(R03, 256, 2);
Label(3);
LdImm32(R04, 0);
CmpJmpGrtEquImm32(R04, 256, 4);
Label(5);
ApiSetPix32(P04, R04, R03, R02);
AddLngImm32(R02, R02, 256);
Label(6);
AddShtImm32(R04, 1);
CmpJmpLesThnImm32(R04, 256, 5);
Label(4);
Label(7);
AddShtImm32(R03, 1);
CmpJmpLesThnImm32(R03, 256, 3);
Label(2);
End();| 0 | nop | |
| 1 | LB | 連番用 |
| 4-1 | LB i | 連番以外も可 |
| 2 | LIMM/CP src,reg | {0,1,2,3,4,rep0,-1} |
| 3 | JMP lb | |
| 4-3 | PLIMM lb,preg | |
| 4-4 | CND reg | 条件実行プリフィクス |
| 5 | API | |
| 4-5 | API | |
| 6 | loop v1,reg | |
| 4-6 | loop v0,v1,reg | |
| 7 | endloop | |
| 8 | LMEM ? | |
| 9 | SMEM ? | |
| 10 | OR2 | |
| 11 | XOR2 | |
| 12 | AND2 | |
| 13 | SBX2 | |
| 14 | ADD2 | |
| 15 | SUB2 | |
| 16 | MUL2 | |
| 17 | SBR2 | |
| 18 | SHL2 | |
| 19 | SAR2 | |
| 1a | DIV2 | |
| 1b | MOD2 | |
| 1e | PCP | |
| 20 | CMP | |
| 21 | CMP | |
| 22 | CMP | |
| 23 | CMP | |
| 24 | CMP | |
| 25 | CMP | |
| 26 | DIV3 | |
| 27 | MOD3 | |
| 28 | OR3 | |
| 29 | XOR3 | |
| 2a | AND3 | |
| 2b | SBX3 | |
| 2c | SHL2 | |
| 2d | SAR2 | |
| 2e |
{ R1, 16, 1, 2, 8, 4, R0 }, // OR
{ -1, R1, 1, 2, 3, 4, R0 }, // XOR
{ R1, 15, 1, 7, 3, 5, R0 }, // AND
{ 64, 16, 1, 2, 8, 4, 32 }, // SBX
{ -1, R1, 1, 2, 3, 4, R0 }, // ADD
{ R1, R0, 1, 2, 3, 4, 5 }, // SUB
{ 10, R0, R1, 7, 3, 6, 5 }, // MUL
{ -1, 0, 1, 2, 3, 4, R0 }, // SBR
{ R1, R0, 1, 2, 3, 4, 5 }, // SHL
{ R1, R0, 1, 2, 3, 4, 5 }, // SAR
{ 10, R0, R1, 7, 3, 6, 5 }, // DIV
{ 10, R0, R1, 7, 3, 6, 5 }, // MOD| 80~96 | 0~16 |
| 97~9f | 20, 18, 40, 80, 100, ff, 7f, 3f, 1f |
| a0~ae | R00~R0e |
| af | R3f |
| b0~b7 | rep0~rep7 |
| b8~bf | -8~-1 |
| c00~cee | 0~ee |
| cef~cf7 | 200, f0, 400, 800, 1000, 2000, 4000, 8000, 10000 |
| cf8~cff | ffff, 7fff, 3fff, 1fff, fff, 7ff, 3ff, 1ff |
| d00~d3f | R00~R3f |
| d40~d4f | reserved |
| d50~d56 | reserved |
| d57 | reserved |
| d58~d5f | reserved |
| d60~d6f | (この項10進数)128K,256K,512K,...,4G |
| d90~dff | -70~-1 |
LdImm32(R00, 256); // 2 9b 0
ApiWindowReg32(P04, R00, R00); // 5 ?? 5 5 4
for (R02 = 0; R02 < R00; R02++) { // 6 5 2
for (R01 = 0; R01 < R00; R01++) { // 6 a0 1
ApiSetPix(P04, R01, R02, R03); // 5 ?? 5 5 a1 a2 a3
AddSht32(R03, R00); // 94 3 a0
} // 以降は自動補完
}
ApiWaitForExit32();
End();
// 29 b0 5? ?5 54 65 26 a0 15 ?? 55 a1 a2 a3 94 3a : 16バイト
(1) → NO1: (2) → NO2: (3) → NO3: Kをかく(すきまあり) → PRIS K; Kを1ふやす → K=K+1; (1)へもどる → GO NO1;
(1) K=1; (2) Kをかく(すきまあり) (3) Kを1ふやす (4) (2)へもどる
HL9>char a[10000]; a[0:<10000] = 0; [i = 2:<10000] { if (a[i] == 0) { pris i; for (j = i; j < 10000; j += i) { a[j] = 1; }}}
//上記を複数行で書いたもの.
char a[10000]; a[0:<10000] = 0;
[i = 2:<10000] {
if (a[i] == 0) {
pris i;
for (j = i; j < 10000; j += i) { a[j] = 1; }
}
}HL9>k = 12345; for (i = k; i > 1;) { for (j = 2; i % j != 0; j++) {} pris j; i /= j; }
//上記を複数行で書いたもの.
k = 12345;
for (i = k; i > 1;) {
for (j = 2; i % j != 0; j++) {}
pris j; i /= j;
}HL9>m = 123; n = 456; [i = 1:<=m] { if (m % i == 0 && n % i == 0) { pris i; }}
//上記を複数行で書いたもの.
m = 123; n = 456;
[i = 1:<=m] {
if (m % i == 0 && n % i == 0) { pris i; }
}HL9>m = 123; n = 456; for (i = m;; i++) { if (i % m == 0 && i % n == 0) break; } pris i;
//上記を複数行で書いたもの.
m = 123; n = 456;
for (i = m;; i++) {
if (i % m == 0 && i % n == 0) break;
}
pris i;HL9>n=0;[100000000]{i=aRnd(10000);j=aRnd(10000);if(i*i+j*j<=10000*10000){n++;}}pr n*4;
//上記を複数行で書いたもの.
n=0;
[100000000] {
i = aRnd(10000); j = aRnd(10000);
if (i*i+j*j <= 10000*10000) {n++;}
}
pr n*4;HL9>for(i=0;i*i<300000000;i++){}pr i
//上記を複数行で書いたもの.
for (i = 0; i * i < 300000000; i++) {}
pr i;NO1: PRIS 1; NO2: PRIS 2; NO3: GO NO5; NO4: PRIS 4; NO5: PRIS 5;
もしKが5より大きければ(8)へ。 → IF (K > 5) GO NO8;
(1) K=1; (2) Kをかく(すきまあり) (3) Kを1ふやす (4) もしKが100より小さければ(2)へもどる
int aGcd(int a, int b)
{
while (a > 0 && b > 0) {
if (a > b) { a %= b; } else { b %= a; }
}
if (a == 0) return b;
return a;
}