Skip to main content

How is WebAssembly cross-platform when Assembly is not

danger

This is non-supervised independent research. While I try my best to answer all of my inquiries, there is still a high chance of containing false, misleading, or not-the-full-story information due to the innately complicated nature of Science and Informatics. If you do find anything wrong or bothering you, please feel free to submit a PR or send me an email.

WebAssembly is a novel way of operating computer instructions at a lower level. Assembly is a straightforward way of describing machines to execute instructions. It follows how Turing Machines would work in the real world.

WASM example​

Assembly languages in general consists of simple and atomic operations that the processor can follow. For example, let's consider the following add.c C code.

#include <stdio.h>

int add(int x, int y) { return x + y; }

int main() {
printf("Hello World\n");
printf("1 + 2 = %d \n", add(1, 2));
return 0;
}
❯ gcc add.c
❯ ./a.out
Hello World
1 + 2 = 3

It is a very straightforward C code that returns the sum of the two integers provided as input. We can convert this C code into WebAssembly with a build tool called Emscripten. After running the following command, we can get the WASM version of the function int add(int x, int y).

emcc add.c -o index.html

8692F9.png

We can now create a local server to test this example.

❯ npx serve .

┌───────────────────────────────────────────────────┐
│ │
│ Serving! │
│ │
│ - Local: http://localhost:3000 │
│ - On Your Network: http://192.168.8.100:3000 │
│ │
│ Copied local address to clipboard! │
│ │
└───────────────────────────────────────────────────┘

And we can confirm that it is working as expected.

56155E.png

The binary codes of WASM​

Now, let's inspect the binary codes of the WASM.

hexdump -c index.wasm. It's long!
0000000  \0   a   s   m 001  \0  \0  \0 001 222 201 200 200  \0 026   `
0000010 \0 001 177 ` 003 177 177 177 001 177 ` 001 177 001 177 `
0000020 002 177 177 001 177 ` 001 177 \0 ` \0 \0 ` 003 177 ~
0000030 177 001 ~ ` 003 177 177 177 \0 ` 005 177 177 177 177 177
0000040 001 177 ` 006 177 | 177 177 177 177 001 177 ` 002 177 177
0000050 \0 ` 002 ~ 177 001 177 ` 004 177 ~ ~ 177 \0 ` 004
0000060 177 177 177 177 001 177 ` 002 | 177 001 | ` \a 177 177
0000070 177 177 177 177 177 001 177 ` 004 177 177 177 177 \0 ` 003
0000080 ~ 177 177 001 177 ` 005 177 177 177 177 177 \0 ` 001 |
0000090 001 ~ ` 002 ~ ~ 001 | ` 004 177 177 ~ 177 001 ~
00000a0 002 � 200 200 200 \0 002 026 w a s i _ s n a
00000b0 p s h o t _ p r e v i e w 1 \b f
00000c0 d _ w r i t e \0 \r 003 e n v 025 e m
00000d0 s c r i p t e n _ m e m c p y _
00000e0 b i g \0 \a 003 � 200 200 200 \0 : 005 003 \0 003
00000f0 003 001 002 006 001 002 004 004 004 \0 005 002 002 001 003 \0
0000100 016 001 001 \b 017 \a 002 020 021 \v \v 022 001 \t \n 023
0000110 002 \0 \0 \0 005 001 003 \f \f 024 \0 004 002 005 \0 \0
0000120 \0 002 004 \0 025 \b 004 205 200 200 200 \0 001 p 001 006
0000130 006 005 206 200 200 200 \0 001 001 200 002 200 002 006 230 200
0000140 200 200 \0 004 177 001 A 220 227 � 002 \v 177 001 A \0
0000150 \v 177 001 A \0 \v 177 001 A \0 \v \a � 201 200 200
0000160 \0 016 006 m e m o r y 002 \0 021 _ _ w a
0000170 s m _ c a l l _ c t o r s \0 002 004
0000180 m a i n \0 005 031 _ _ i n d i r e c
0000190 t _ f u n c t i o n _ t a b l e
00001a0 001 \0 020 _ _ e r r n o _ l o c a t
00001b0 i o n \0 025 006 f f l u s h \0 7 025 e
00001c0 m s c r i p t e n _ s t a c k _
00001d0 i n i t \0 3 031 e m s c r i p t e
00001e0 n _ s t a c k _ g e t _ f r e e
00001f0 \0 4 031 e m s c r i p t e n _ s t
0000200 a c k _ g e t _ b a s e \0 5 030 e
0000210 m s c r i p t e n _ s t a c k _
0000220 g e t _ e n d \0 6 \t s t a c k S
0000230 a v e \0 0 \f s t a c k R e s t o
0000240 r e \0 1 \n s t a c k A l l o c \0
0000250 2 \f d y n C a l l _ j i j i \0 ;
0000260 \t 213 200 200 200 \0 001 \0 A 001 \v 005 \b \a \t #
0000270 $ \n � � 200 200 \0 : 006 \0 020 3 020 * \v 9
0000280 001 006 177 # \0 ! 002 A 020 ! 003 002 003 k
0000290 ! 004 004 \0 6 002 \f 004 001 6 002 \b
00002a0 004 ( 002 \f ! 005 004 ( 002 \b ! 006 005
00002b0 006 j ! \a \a 017 \v k 001 \r 177 # \0 !
00002c0 \0 A 020 ! 001 \0 001 k ! 002 002 $ \0
00002d0 A \0 ! 003 002 003 6 002 \f A � \b ! 004
00002e0 A \0 ! 005 004 005 020 006 032 A 001 ! 006 A
00002f0 002 ! \a 006 \a 020 003 ! \b 002 \b 6
0000300 002 \0 A � \b ! \t \t 002 020 006 032 A \0
0000310 ! \n A 020 ! \v 002 \v j ! \f \f $
0000320 \0 \n 017 \v \v 001 001 177 020 004 ! 002 002 017
0000330 \v ( 001 001 177 # \0 A 020 k " 002 $ \0 002
0000340 001 6 002 \f A � \f \0 001 020 " ! 001
0000350 002 A 020 j $ \0 001 \v � 002 001 \a 177 #
0000360 \0 A k " 003 $ \0 003 \0 ( 002 034 "
0000370 004 6 002 020 \0 ( 002 024 ! 005 003 002 6
0000380 002 034 003 001 6 002 030 003 005 004 k
0000390 " 001 6 002 024 001 002 j ! 006 003 A 020
00003a0 j ! 004 A 002 ! \a 002 @ 002 @ 002 @ 002 @ 002
00003b0 @ \0 ( 002 < 003 A 020 j A 002 003 A
00003c0 \f j 020 \0 020 & E \r \0 004 ! 005 \f 001 \v
00003d0 003 @ 006 003 ( 002 \f " 001 F \r 002 002 @
00003e0 001 A 177 J \r \0 004 ! 005 \f 004 \v 004
00003f0 001 004 ( 002 004 " \b K " \t A 003 t j
0000400 " 005 005 ( 002 \0 001 \b A \0 \t 033
0000410 k " \b j 6 002 \0 004 A \f A 004 \t 033
0000420 j " 004 004 ( 002 \0 \b k 6 002 \0 006
0000430 001 k ! 006 005 ! 004 \0 ( 002 < 005
0000440 \a \t k " \a 003 A \f j 020 \0 020 &
0000450 E \r \0 \v \v 006 A 177 G \r 001 \v \0
0000460 \0 ( 002 , " 001 6 002 034 \0 001 6 002 024
0000470 \0 001 \0 ( 002 0 j 6 002 020 002 !
0000480 001 \f 001 \v A \0 ! 001 \0 A \0 6 002 034
0000490 \0 B \0 7 003 020 \0 \0 ( 002 \0 A r
00004a0 6 002 \0 \a A 002 F \r \0 002 005 ( 002
00004b0 004 k ! 001 \v 003 A j $ \0 001 \v 004
00004c0 \0 A \0 \v 004 \0 B \0 \v � 002 002 003 177 001 ~
00004d0 002 @ 002 E \r \0 \0 001 : \0 \0 002
00004e0 \0 j " 003 A 177 j 001 : \0 \0 002 A
00004f0 003 I \r \0 \0 001 : \0 002 \0 001 :
0000500 \0 001 003 A } j 001 : \0 \0 003 A ~
0000510 j 001 : \0 \0 002 A \a I \r \0 \0
0000520 001 : \0 003 003 A | j 001 : \0 \0 002
0000530 A \t I \r \0 \0 A \0 \0 k A 003 q "
0000540 004 j " 003 001 A � 001 q A 201 202 204 \b l
0000550 " 001 6 002 \0 003 002 004 k A | q "
0000560 004 j " 002 A | j 001 6 002 \0 004 A \t
0000570 I \r \0 003 001 6 002 \b 003 001 6 002
0000580 004 002 A x j 001 6 002 \0 002 A t j
0000590 001 6 002 \0 004 A 031 I \r \0 003 001
00005a0 6 002 030 003 001 6 002 024 003 001 6 002
00005b0 020 003 001 6 002 \f 002 A p j 001 6
00005c0 002 \0 002 A l j 001 6 002 \0 002 A h
00005d0 j 001 6 002 \0 002 A d j 001 6 002 \0
00005e0 004 003 A 004 q A 030 r " 005 k " 002 A
00005f0 I \r \0 001 � B 201 200 200 200 020 ~ ! 006
0000600 003 005 j ! 001 003 @ 001 006 7 003 030
0000610 001 006 7 003 020 001 006 7 003 \b 001
0000620 006 7 003 \0 001 A j ! 001 002 A `
0000630 j " 002 A 037 K \r \0 \v \v \0 \v 004 \0 A
0000640 001 \v 002 \0 \v 002 \0 \v 002 \0 \v \n \0 A � 025
0000650 020 \r A � 025 \v \a \0 A � 025 020 016 \v \ 001
0000660 001 177 \0 \0 ( 002 H " 001 A 177 j 001
0000670 r 6 002 H 002 @ \0 ( 002 \0 " 001 A \b q
0000680 E \r \0 \0 001 A r 6 002 \0 A 177 017
0000690 \v \0 B \0 7 002 004 \0 \0 ( 002 , "
00006a0 001 6 002 034 \0 001 6 002 024 \0 001
00006b0 \0 ( 002 0 j 6 002 020 A \0 \v \n \0 \0 A
00006c0 P j A \n I \v � 001 001 002 177 002 A \0 G
00006d0 ! 003 002 @ 002 @ 002 @ \0 A 003 q E \r \0
00006e0 002 E \r \0 001 A � 001 q ! 004 003 @
00006f0 \0 - \0 \0 004 F \r 002 002 A 177 j " 002
0000700 A \0 G ! 003 \0 A 001 j " \0 A 003 q E
0000710 \r 001 002 \r \0 \v \v 003 E \r 001 002 @
0000720 \0 - \0 \0 001 A � 001 q F \r \0 002 A
0000730 004 I \r \0 001 A � 001 q A 201 202 204 \b l
0000740 ! 004 003 @ \0 ( 002 \0 004 s " 003 A 177
0000750 s 003 A � � � w j q A 200 201 202 204 x
0000760 q \r 002 \0 A 004 j ! \0 002 A | j "
0000770 002 A 003 K \r \0 \v \v 002 E \r 001 \v 001
0000780 A � 001 q ! 003 003 @ 002 @ \0 - \0 \0
0000790 003 G \r \0 \0 017 \v \0 A 001 j ! \0
00007a0 002 A 177 j " 002 \r \0 \v \v A \0 \v 026 001 001
00007b0 177 \0 A \0 001 020 023 " 002 \0 k 001
00007c0 002 033 \v 005 \0 A � 025 \v 216 001 002 001 ~ 001
00007d0 177 002 @ \0 � " 002 B 4 210 � A � 017 q
00007e0 " 003 A � 017 F \r \0 002 @ 003 \r \0 002 @
00007f0 002 @ \0 D \0 \0 \0 \0 \0 \0 \0 \0 b \r \0
0000800 A \0 ! 003 \f 001 \v \0 D \0 \0 \0 \0 \0 \0
0000810 � C � 001 020 026 ! \0 001 ( 002 \0 A @
0000820 j ! 003 \v 001 003 6 002 \0 \0 017 \v
0000830 001 003 A 202 x j 6 002 \0 002 B � � �
0000840 � � � � 207 200 177 203 B 200 200 200 200 200 200 200
0000850 � ? 204 � ! \0 \v \0 \v 216 004 001 003 177 002
0000860 @ 002 A 200 004 I \r \0 \0 001 002 020
0000870 001 \0 017 \v \0 002 j ! 003 002 @ 002 @
0000880 001 \0 s A 003 q \r \0 002 @ 002 @ \0
0000890 A 003 q \r \0 \0 ! 002 \f 001 \v 002 @ 002
00008a0 \r \0 \0 ! 002 \f 001 \v \0 ! 002 003 @
00008b0 002 001 - \0 \0 : \0 \0 001 A 001 j ! 001
00008c0 002 A 001 j " 002 A 003 q E \r 001 002
00008d0 003 I \r \0 \v \v 002 @ 003 A | q " 004 A
00008e0 � \0 I \r \0 002 004 A @ j " 005 K \r
00008f0 \0 003 @ 002 001 ( 002 \0 6 002 \0 002
0000900 001 ( 002 004 6 002 004 002 001 ( 002 \b 6 002
0000910 \b 002 001 ( 002 \f 6 002 \f 002 001 (
0000920 002 020 6 002 020 002 001 ( 002 024 6 002 024
0000930 002 001 ( 002 030 6 002 030 002 001 ( 002 034
0000940 6 002 034 002 001 ( 002 6 002 002
0000950 001 ( 002 $ 6 002 $ 002 001 ( 002 ( 6 002
0000960 ( 002 001 ( 002 , 6 002 , 002 001 (
0000970 002 0 6 002 0 002 001 ( 002 4 6 002 4
0000980 002 001 ( 002 8 6 002 8 002 001 ( 002 <
0000990 6 002 < 001 A � \0 j ! 001 002 A � \0
00009a0 j " 002 005 M \r \0 \v \v 002 004 O \r
00009b0 001 003 @ 002 001 ( 002 \0 6 002 \0 001 A
00009c0 004 j ! 001 002 A 004 j " 002 004 I \r \0
00009d0 \f 002 \v \0 \v 002 @ 003 A 004 O \r \0 \0
00009e0 ! 002 \f 001 \v 002 @ 003 A | j " 004 \0
00009f0 O \r \0 \0 ! 002 \f 001 \v \0 ! 002 003 @
0000a00 002 001 - \0 \0 : \0 \0 002 001 - \0
0000a10 001 : \0 001 002 001 - \0 002 : \0 002 002
0000a20 001 - \0 003 : \0 003 001 A 004 j ! 001
0000a30 002 A 004 j " 002 004 M \r \0 \v \v 002 @
0000a40 002 003 O \r \0 003 @ 002 001 - \0 \0 :
0000a50 \0 \0 001 A 001 j ! 001 002 A 001 j " 002
0000a60 003 G \r \0 \v \v \0 \v � 001 001 003 177 002
0000a70 @ 002 @ 002 ( 002 020 " 003 \r \0 A \0 ! 004
0000a80 002 020 021 \r 001 002 ( 002 020 ! 003 \v 002 @
0000a90 003 002 ( 002 024 " 005 k 001 O \r \0
0000aa0 002 \0 001 002 ( 002 $ 021 001 \0 017 \v 002
0000ab0 @ 002 @ 002 ( 002 P A \0 N \r \0 A \0 !
0000ac0 003 \f 001 \v 001 ! 004 003 @ 002 @ 004 " 003
0000ad0 \r \0 A \0 ! 003 \f 002 \v \0 003 A 177 j
0000ae0 " 004 j - \0 \0 A \n G \r \0 \v 002 \0
0000af0 003 002 ( 002 $ 021 001 \0 " 004 003 I \r
0000b00 001 \0 003 j ! \0 001 003 k ! 001
0000b10 002 ( 002 024 ! 005 \v 005 \0 001 020 027 032
0000b20 002 002 ( 002 024 001 j 6 002 024 003
0000b30 001 j ! 004 \v 004 \v � 002 001 004 177 # \0 A
0000b40 � 001 k " 005 $ \0 005 002 6 002 � 001 A
0000b50 \0 ! 006 005 A � 001 j A \0 A ( 020 \n 032
0000b60 005 005 ( 002 � 001 6 002 � 001 002 @ 002 @
0000b70 A \0 001 005 A � 001 j 005 A � \0 j
0000b80 005 A � 001 j 003 004 020 032 A \0 N \r
0000b90 \0 A 177 ! 004 \f 001 \v 002 @ \0 ( 002 L A
0000ba0 \0 H \r \0 \0 020 \v ! 006 \v \0 ( 002 \0
0000bb0 ! \a 002 @ \0 ( 002 H A \0 J \r \0 \0
0000bc0 \a A _ q 6 002 \0 \v 002 @ 002 @ 002 @ 002
0000bd0 @ \0 ( 002 0 \r \0 \0 A � \0 6 002 0
0000be0 \0 A \0 6 002 034 \0 B \0 7 003 020 \0
0000bf0 ( 002 , ! \b \0 005 6 002 , \f 001 \v A
0000c00 \0 ! \b \0 ( 002 020 \r 001 \v A 177 ! 002
0000c10 \0 020 021 \r 001 \v \0 001 005 A � 001 j
0000c20 005 A � \0 j 005 A � 001 j 003 004
0000c30 020 032 ! 002 \v \a A q ! 004 002 @ \b
0000c40 E \r \0 \0 A \0 A \0 \0 ( 002 $ 021 001
0000c50 \0 032 \0 A \0 6 002 0 \0 \b 6 002 ,
0000c60 \0 A \0 6 002 034 \0 ( 002 024 ! 003 \0
0000c70 B \0 7 003 020 002 A 177 003 033 ! 002 \v
0000c80 \0 \0 ( 002 \0 " 003 004 r 6 002 \0 A 177
0000c90 002 003 A q 033 ! 004 006 E \r \0
0000ca0 \0 020 \f \v 005 A � 001 j $ \0 004 \v �
0000cb0 022 002 022 177 001 ~ # \0 A � \0 k " \a $ \0
0000cc0 \a 001 6 002 L \a A 7 j ! \b \a
0000cd0 A 8 j ! \t A \0 ! \n A \0 ! \v A \0 !
0000ce0 \f 002 @ 002 @ 002 @ 002 @ 003 @ 001 ! \r
0000cf0 \f \v A � � � � \a s J \r 001 \f
0000d00 \v j ! \v \r ! \f 002 @ 002 @ 002 @ 002 @
0000d10 002 @ \r - \0 \0 " 016 E \r \0 003 @ 002 @
0000d20 002 @ 002 @ 016 A � 001 q " 016 \r \0 \f
0000d30 ! 001 \f 001 \v 016 A % G \r 001 \f ! 016
0000d40 003 @ 002 @ 016 - \0 001 A % F \r \0 016
0000d50 ! 001 \f 002 \v \f A 001 j ! \f 016 - \0
0000d60 002 ! 017 016 A 002 j " 001 ! 016 017 A %
0000d70 F \r \0 \v \v \f \r k " \f \v A �
0000d80 � � � \a s " 016 J \r \b 002 @ \0 E \r
0000d90 \0 \0 \r \f 020 033 \v \f \r \a \a
0000da0 001 6 002 L 001 A 001 j ! \f A 177 ! 020
0000db0 002 @ 001 , \0 001 020 022 E \r \0 001 - \0
0000dc0 002 A $ G \r \0 001 A 003 j ! \f 001 ,
0000dd0 \0 001 A P j ! 020 A 001 ! \n \v \a \f
0000de0 6 002 L A \0 ! 021 002 @ 002 @ \f , \0 \0
0000df0 " 022 A ` j " 001 A 037 M \r \0 \f ! 017
0000e00 \f 001 \v A \0 ! 021 \f ! 017 A 001 001 t
0000e10 " 001 A 211 � 004 q E \r \0 003 @ \a \f
0000e20 A 001 j " 017 6 002 L 001 021 r ! 021
0000e30 \f , \0 001 " 022 A ` j " 001 A O \r 001
0000e40 017 ! \f A 001 001 t " 001 A 211 � 004 q
0000e50 \r \0 \v \v 002 @ 002 @ 022 A * G \r \0 002
0000e60 @ 002 @ 017 , \0 001 020 022 E \r \0 017 -
0000e70 \0 002 A $ G \r \0 017 , \0 001 A 002 t
0000e80 004 j A � ~ j A \n 6 002 \0 017 A 003 j
0000e90 ! 022 017 , \0 001 A 003 t 003 j A 200 }
0000ea0 j ( 002 \0 ! 023 A 001 ! \n \f 001 \v \n \r
0000eb0 006 017 A 001 j ! 022 002 @ \0 \r \0 \a
0000ec0 022 6 002 L A \0 ! \n A \0 ! 023 \f 003 \v
0000ed0 002 002 ( 002 \0 " \f A 004 j 6 002 \0
0000ee0 \f ( 002 \0 ! 023 A \0 ! \n \v \a 022 6
0000ef0 002 L 023 A 177 J \r 001 A \0 023 k ! 023
0000f00 021 A 200 � \0 r ! 021 \f 001 \v \a A �
0000f10 \0 j 020 034 " 023 A \0 H \r \t \a ( 002 L
0000f20 ! 022 \v A \0 ! \f A 177 ! 024 002 @ 002 @
0000f30 022 - \0 \0 A . F \r \0 022 ! 001 A \0 !
0000f40 025 \f 001 \v 002 @ 022 - \0 001 A * G \r \0
0000f50 002 @ 002 @ 022 , \0 002 020 022 E \r \0 022
0000f60 - \0 003 A $ G \r \0 022 , \0 002 A 002 t
0000f70 004 j A � ~ j A \n 6 002 \0 022 A 004
0000f80 j ! 001 022 , \0 002 A 003 t 003 j A 200
0000f90 } j ( 002 \0 ! 024 \f 001 \v \n \r 006 022
0000fa0 A 002 j ! 001 002 @ \0 \r \0 A \0 ! 024 \f
0000fb0 001 \v 002 002 ( 002 \0 " 017 A 004 j 6 002
0000fc0 \0 017 ( 002 \0 ! 024 \v \a 001 6 002 L
0000fd0 024 A 177 s A 037 v ! 025 \f 001 \v \a
0000fe0 022 A 001 j 6 002 L A 001 ! 025 \a A � \0
0000ff0 j 020 034 ! 024 \a ( 002 L ! 001 \v 003 @
0001000 \f ! 017 A 034 ! 026 001 " 022 , \0 \0 " \f
0001010 A 205 177 j A F I \r \n 022 A 001 j ! 001
0001020 \f 017 A : l j A 217 \b j - \0 \0 "
0001030 \f A 177 j A \b I \r \0 \v \a 001 6 002
0001040 L 002 @ 002 @ 002 @ \f A 033 F \r \0 \f
0001050 E \r \f 002 @ 020 A \0 H \r \0 004 020
0001060 A 002 t j \f 6 002 \0 \a 003 020 A
0001070 003 t j ) 003 \0 7 003 @ \f 002 \v \0 E \r
0001080 \t \a A � \0 j \f 002 006 020 035 \f
0001090 002 \v 020 A 177 J \r \v \v A \0 ! \f \0
00010a0 E \r \b \v 021 A � � { q " 027 021
00010b0 021 A 200 � \0 q 033 ! 021 A \0 ! 020 A 200 \b
00010c0 ! 030 \t ! 026 002 @ 002 @ 002 @ 002 @ 002 @
00010d0 002 @ 002 @ 002 @ 002 @ 002 @ 002 @ 002 @ 002 @
00010e0 002 @ 002 @ 002 @ 022 , \0 \0 " \f A _ q
00010f0 \f \f A 017 q A 003 F 033 \f 017 033
0001100 " \f A � 177 j 016 ! 004 025 025 025 025 025 025 025
0001110 025 016 025 017 006 016 016 016 025 006 025 025 025 025 002 005
0001120 003 025 025 \t 025 001 025 025 004 \0 \v \t ! 026 002
0001130 @ \f A � 177 j 016 \a 016 025 \v 025 016 016 016
0001140 \0 \v \f A � \0 F \r \t \f 023 \v A \0 !
0001150 020 A 200 \b ! 030 \a ) 003 @ ! 031 \f 005 \v
0001160 A \0 ! \f 002 @ 002 @ 002 @ 002 @ 002 @ 002 @
0001170 002 @ 017 A � 001 q 016 \b \0 001 002 003 004 033
0001180 005 006 033 \v \a ( 002 @ \v 6 002 \0 \f 032
0001190 \v \a ( 002 @ \v 6 002 \0 \f 031 \v \a
00011a0 ( 002 @ \v � 7 003 \0 \f 030 \v \a ( 002
00011b0 @ \v ; 001 \0 \f 027 \v \a ( 002 @ \v
00011c0 : \0 \0 \f 026 \v \a ( 002 @ \v 6 002 \0
00011d0 \f 025 \v \a ( 002 @ \v � 7 003 \0 \f 024
00011e0 \v 024 A \b 024 A \b K 033 ! 024 021 A
00011f0 \b r ! 021 A � \0 ! \f \v \a ) 003 @
0001200 \t \f A q 020 036 ! \r A \0 ! 020 A 200
0001210 \b ! 030 \a ) 003 @ P \r 003 021 A \b q
0001220 E \r 003 \f A 004 v A 200 \b j ! 030 A 002
0001230 ! 020 \f 003 \v A \0 ! 020 A 200 \b ! 030 \a
0001240 ) 003 @ \t 020 037 ! \r 021 A \b q E \r
0001250 002 024 \t \r k " \f A 001 j 024
0001260 \f J 033 ! 024 \f 002 \v 002 @ \a ) 003 @ "
0001270 031 B 177 U \r \0 \a B \0 031 } " 031 7
0001280 003 @ A 001 ! 020 A 200 \b ! 030 \f 001 \v 002 @
0001290 021 A 200 020 q E \r \0 A 001 ! 020 A 201 \b
00012a0 ! 030 \f 001 \v A 202 \b A 200 \b 021 A 001 q
00012b0 " 020 033 ! 030 \v 031 \t 020 ! \r \v 002
00012c0 @ 025 E \r \0 024 A \0 H \r 020 \v 021
00012d0 A � � { q 021 025 033 ! 021 002 @ \a
00012e0 ) 003 @ " 031 B \0 R \r \0 024 \r \0 \t
00012f0 ! \r \t ! 026 A \0 ! 024 \f \r \v 024
0001300 \t \r k 031 P j " \f 024 \f J 033
0001310 ! 024 \f \v \v \a ( 002 @ " \f A � \b
0001320 \f 033 ! \r \r \r 024 A � � � � \a
0001330 024 A � � � � \a I 033 020 024 " \f j !
0001340 026 002 @ 024 A 177 L \r \0 027 ! 021 \f
0001350 ! 024 \f \f \v 027 ! 021 \f ! 024 026 -
0001360 \0 \0 \r 016 \f \v \v 002 @ 024 E \r \0 \a
0001370 ( 002 @ ! 016 \f 002 \v A \0 ! \f \0 A
0001380 023 A \0 021 020 ! \f 002 \v \a A \0 6
0001390 002 \f \a \a ) 003 @ > 002 \b \a \a
00013a0 A \b j 6 002 @ \a A \b j ! 016 A 177 !
00013b0 024 \v A \0 ! \f 002 @ 003 @ 016 ( 002 \0 "
00013c0 017 E \r 001 002 @ \a A 004 j 017 020 , "
00013d0 017 A \0 H " \r \r \0 017 024 \f k K
00013e0 \r \0 016 A 004 j ! 016 024 017 \f j
00013f0 " \f K \r 001 \f 002 \v \v \r \r 016 \v A =
0001400 ! 026 \f A \0 H \r \f \0 A 023
0001410 \f 021 020 ! 002 @ \f \r \0 A \0 ! \f \f
0001420 001 \v A \0 ! 017 \a ( 002 @ ! 016 003 @
0001430 016 ( 002 \0 " \r E \r 001 \a A 004 j \r
0001440 020 , " \r 017 j " 017 \f K \r 001 \0
0001450 \a A 004 j \r 020 033 016 A 004 j ! 016
0001460 017 \f I \r \0 \v \v \0 A 023
0001470 \f 021 A 200 � \0 s 020 ! 023 \f 023
0001480 \f J 033 ! \f \f \t \v 002 @ 025 E \r \0
0001490 024 A \0 H \r \n \v A = ! 026 \0 \a
00014a0 + 003 @ 023 024 021 \f 005 021 \t \0
00014b0 " \f A \0 N \r \b \f \n \v \a \a ) 003
00014c0 @ < \0 7 A 001 ! 024 \b ! \r \t ! 026
00014d0 027 ! 021 \f 005 \v \f - \0 001 ! 016 \f
00014e0 A 001 j ! \f \f \0 \v \0 \v \0 \r \b \n
00014f0 E \r 003 A 001 ! \f 002 @ 003 @ 004 \f A
0001500 002 t j ( 002 \0 " 016 E \r 001 003 \f A
0001510 003 t j 016 002 006 020 035 A 001 ! \v
0001520 \f A 001 j " \f A \n G \r \0 \f \n \v \0 \v
0001530 A 001 ! \v \f A \n O \r \b 003 @ 004
0001540 \f A 002 t j ( 002 \0 \r 001 A 001 ! \v \f
0001550 A 001 j " \f A \n F \r \t \f \0 \v \0 \v A
0001560 034 ! 026 \f 005 \v \t ! 026 \v 024 026
0001570 \r k " 022 024 022 J 033 " 024 020 A �
0001580 � � � \a s J \r 002 A = ! 026 023 020
0001590 024 j " 017 023 017 J 033 " \f 016 J
00015a0 \r 003 \0 A \f 017 021 020 ! \0
00015b0 030 020 020 033 \0 A 0 \f 017 021
00015c0 A 200 200 004 s 020 ! \0 A 0 024 022 A
00015d0 \0 020 ! \0 \r 022 020 033 \0 A
00015e0 \f 017 021 A 200 � \0 s 020 ! \f 001 \v \v
00015f0 A \0 ! \v \f 003 \v A = ! 026 \v 020 025 026
0001600 6 002 \0 \v A 177 ! \v \v \a A � \0 j $
0001610 \0 \v \v 030 \0 002 @ \0 - \0 \0 A q
0001620 \r \0 001 002 \0 020 030 032 \v \v r 001 003
0001630 177 A \0 ! 001 002 @ \0 ( 002 \0 , \0 \0 020
0001640 022 \r \0 A \0 017 \v 003 @ \0 ( 002 \0 ! 002
0001650 A 177 ! 003 002 @ 001 A � 231 � � \0 K \r
0001660 \0 A 177 002 , \0 \0 A P j " 003 001 A
0001670 \n l " 001 j 003 001 A � � � � \a s
0001680 J 033 ! 003 \v \0 002 A 001 j 6 002 \0
0001690 003 ! 001 002 , \0 001 020 022 \r \0 \v 003 \v
00016a0 � 004 \0 002 @ 002 @ 002 @ 002 @ 002 @ 002 @ 002
00016b0 @ 002 @ 002 @ 002 @ 002 @ 002 @ 002 @ 002 @ 002
00016c0 @ 002 @ 002 @ 002 @ 002 @ 001 A w j 016 022
00016d0 \0 001 002 005 003 004 006 \a \b \t \n \v \f \r 016 017
00016e0 020 021 022 \v 002 002 ( 002 \0 " 001 A 004 j
00016f0 6 002 \0 \0 001 ( 002 \0 6 002 \0 017 \v
0001700 002 002 ( 002 \0 " 001 A 004 j 6 002 \0 \0
0001710 001 4 002 \0 7 003 \0 017 \v 002 002 ( 002
0001720 \0 " 001 A 004 j 6 002 \0 \0 001 5 002 \0
0001730 7 003 \0 017 \v 002 002 ( 002 \0 " 001 A 004
0001740 j 6 002 \0 \0 001 4 002 \0 7 003 \0 017 \v
0001750 002 002 ( 002 \0 " 001 A 004 j 6 002 \0
0001760 \0 001 5 002 \0 7 003 \0 017 \v 002 002 (
0001770 002 \0 A \a j A x q " 001 A \b j 6 002 \0
0001780 \0 001 ) 003 \0 7 003 \0 017 \v 002 002
0001790 ( 002 \0 " 001 A 004 j 6 002 \0 \0 001 2
00017a0 001 \0 7 003 \0 017 \v 002 002 ( 002 \0 " 001
00017b0 A 004 j 6 002 \0 \0 001 3 001 \0 7 003 \0
00017c0 017 \v 002 002 ( 002 \0 " 001 A 004 j 6 002
00017d0 \0 \0 001 0 \0 \0 7 003 \0 017 \v 002
00017e0 002 ( 002 \0 " 001 A 004 j 6 002 \0 \0 001
00017f0 1 \0 \0 7 003 \0 017 \v 002 002 ( 002 \0 A
0001800 \a j A x q " 001 A \b j 6 002 \0 \0
0001810 001 ) 003 \0 7 003 \0 017 \v 002 002 ( 002 \0
0001820 " 001 A 004 j 6 002 \0 \0 001 5 002 \0 7
0001830 003 \0 017 \v 002 002 ( 002 \0 A \a j A x
0001840 q " 001 A \b j 6 002 \0 \0 001 ) 003 \0
0001850 7 003 \0 017 \v 002 002 ( 002 \0 A \a j A
0001860 x q " 001 A \b j 6 002 \0 \0 001 ) 003
0001870 \0 7 003 \0 017 \v 002 002 ( 002 \0 " 001 A
0001880 004 j 6 002 \0 \0 001 4 002 \0 7 003 \0 017
0001890 \v 002 002 ( 002 \0 " 001 A 004 j 6 002 \0
00018a0 \0 001 5 002 \0 7 003 \0 017 \v 002 002
00018b0 ( 002 \0 A \a j A x q " 001 A \b j 6 002
00018c0 \0 \0 001 + 003 \0 9 003 \0 017 \v \0
00018d0 002 003 021 \n \0 \v \v = 001 001 177 002 @ \0
00018e0 P \r \0 003 @ 001 A 177 j " 001 \0 � A
00018f0 017 q A � \f j - \0 \0 002 r : \0 \0
0001900 \0 B 017 V ! 003 \0 B 004 210 ! \0 003 \r
0001910 \0 \v \v 001 \v 6 001 001 177 002 @ \0 P \r
0001920 \0 003 @ 001 A 177 j " 001 \0 � A \a q
0001930 A 0 r : \0 \0 \0 B \a V ! 002 \0 B
0001940 003 210 ! \0 002 \r \0 \v \v 001 \v 210 001 002
0001950 001 ~ 003 177 002 @ 002 @ \0 B 200 200 200 200 020
0001960 Z \r \0 \0 ! 002 \f 001 \v 003 @ 001 A 177
0001970 j " 001 \0 \0 B \n 200 " 002 B \n ~ }
0001980 � A 0 r : \0 \0 \0 B � � � � 237 001
0001990 V ! 003 002 ! \0 003 \r \0 \v \v 002 @
00019a0 002 � " 003 E \r \0 003 @ 001 A 177 j " 001
00019b0 003 003 A \n n " 004 A \n l k A 0 r
00019c0 : \0 \0 003 A \t K ! 005 004 ! 003 005
00019d0 \r \0 \v \v 001 \v p 001 001 177 # \0 A 200 002
00019e0 k " 005 $ \0 002 @ 002 003 L \r \0 004
00019f0 A 200 � 004 q \r \0 005 001 A � 001 q
0001a00 002 003 k " 003 A 200 002 003 A 200 002 I "
0001a10 002 033 020 \n 032 002 @ 002 \r \0 003 @ \0
0001a20 005 A 200 002 020 033 003 A 200 ~ j " 003 A �
0001a30 001 K \r \0 \v \v \0 005 003 020 033 \v
0001a40 005 A 200 002 j $ \0 \v 016 \0 \0 001 002
0001a50 A 004 A 005 020 031 \v 215 031 003 022 177 002 ~ 001 |
0001a60 # \0 A � 004 k " 006 $ \0 A \0 ! \a 006
0001a70 A \0 6 002 , 002 @ 002 @ 001 020 % " 030 B
0001a80 177 U \r \0 A 001 ! \b A 212 \b ! \t 001 232
0001a90 " 001 020 % ! 030 \f 001 \v 002 @ 004 A 200 020
0001aa0 q E \r \0 A 001 ! \b A 215 \b ! \t \f 001 \v
0001ab0 A 220 \b A 213 \b 004 A 001 q " \b 033 ! \t
0001ac0 \b E ! \a \v 002 @ 002 @ 030 B 200 200 200
0001ad0 200 200 200 200 � � \0 203 B 200 200 200 200 200 200 200
0001ae0 � � \0 R \r \0 \0 A 002 \b A 003
0001af0 j " \n 004 A � � { q 020 ! \0 \t
0001b00 \b 020 033 \0 A 235 \b A � \b 005 A
0001b10 q " \v 033 A � \b A � \b \v 033 001
0001b20 001 b 033 A 003 020 033 \0 A 002 \n
0001b30 004 A 200 � \0 s 020 ! \n 002 \n 002
0001b40 J 033 ! \f \f 001 \v 006 A 020 j ! \r 002 @
0001b50 002 @ 002 @ 002 @ 001 006 A , j 020 026 "
0001b60 001 001 � " 001 D \0 \0 \0 \0 \0 \0 \0 \0 a
0001b70 \r \0 006 006 ( 002 , " \n A 177 j 6 002
0001b80 , 005 A r " 016 A � \0 G \r 001 \f 003
0001b90 \v 005 A r " 016 A � \0 F \r 002 A 006
0001ba0 003 003 A \0 H 033 ! 017 006 ( 002 , !
0001bb0 020 \f 001 \v 006 \n A c j " 020 6 002 ,
0001bc0 A 006 003 003 A \0 H 033 ! 017 001 D \0
0001bd0 \0 \0 \0 \0 \0 � A � ! 001 \v 006 A 0 j
0001be0 A \0 A � 002 020 A \0 H 033 j " 021 ! \v
0001bf0 003 @ 002 @ 002 @ 001 D \0 \0 \0 \0 \0 \0 �
0001c00 A c 001 D \0 \0 \0 \0 \0 \0 \0 \0 f q E
0001c10 \r \0 001 � ! \n \f 001 \v A \0 ! \n \v
0001c20 \v \n 6 002 \0 \v A 004 j ! \v 001
0001c30 \n � � D \0 \0 \0 \0 e � � A � " 001 D
0001c40 \0 \0 \0 \0 \0 \0 \0 \0 b \r \0 \v 002 @ 002 @
0001c50 020 A 001 N \r \0 020 ! 003 \v ! \n
0001c60 021 ! 022 \f 001 \v 021 ! 022 020 ! 003 003 @
0001c70 003 A 035 003 A 035 H 033 ! 003 002 @ \v
0001c80 A | j " \n 022 I \r \0 003 � ! 031 B
0001c90 \0 ! 030 003 @ \n \n 5 002 \0 031 206
0001ca0 030 B � � � � 017 203 | " 030 030 B 200 224
0001cb0 � � 003 200 " 030 B 200 224 � � 003 ~ } > 002
0001cc0 \0 \n A | j " \n 022 O \r \0 \v 030
0001cd0 � " \n E \r \0 022 A | j " 022 \n 6
0001ce0 002 \0 \v 002 @ 003 @ \v " \n 022 M \r 001
0001cf0 \n A | j " \v ( 002 \0 E \r \0 \v \v
0001d00 006 006 ( 002 , 003 k " 003 6 002 , \n
0001d10 ! \v 003 A \0 J \r \0 \v \v 002 @ 003 A
0001d20 177 J \r \0 017 A 031 j A \t n A 001 j !
0001d30 023 016 A � \0 F ! 024 003 @ A \0 003 k
0001d40 " \v A \t \v A \t H 033 ! 025 002 @ 002 @
0001d50 022 \n I \r \0 022 ( 002 \0 ! \v \f 001
0001d60 \v A 200 224 � � 003 025 v ! 026 A 177 025
0001d70 t A 177 s ! 027 A \0 ! 003 022 ! \v 003 @
0001d80 \v \v ( 002 \0 " \f 025 v 003 j 6
0001d90 002 \0 \f 027 q 026 l ! 003 \v A 004
0001da0 j " \v \n I \r \0 \v 022 ( 002 \0 ! \v
0001db0 003 E \r \0 \n 003 6 002 \0 \n A 004
0001dc0 j ! \n \v 006 006 ( 002 , 025 j " 003
0001dd0 6 002 , 021 022 \v E A 002 t j " 022
0001de0 024 033 " \v 023 A 002 t j \n \n
0001df0 \v k A 002 u 023 J 033 ! \n 003 A \0 H
0001e00 \r \0 \v \v A \0 ! 003 002 @ 022 \n O \r
0001e10 \0 021 022 k A 002 u A \t l ! 003 A \n
0001e20 ! \v 022 ( 002 \0 " \f A \n I \r \0 003 @
0001e30 003 A 001 j ! 003 \f \v A \n l " \v
0001e40 O \r \0 \v \v 002 @ 017 A \0 003 016 A
0001e50 � \0 F 033 k 017 A \0 G 016 A � \0 F
0001e60 q k " \v \n 021 k A 002 u A \t l A
0001e70 w j N \r \0 \v A 200 � \0 j " \f A \t
0001e80 m " 026 A 002 t 006 A 0 j A 004 A � 002
0001e90 020 A \0 H 033 j j A 200 ` j ! 025 A \n
0001ea0 ! \v 002 @ \f 026 A \t l k " \f A \a
0001eb0 J \r \0 003 @ \v A \n l ! \v \f A 001
0001ec0 j " \f A \b G \r \0 \v \v 025 A 004 j !
0001ed0 027 002 @ 002 @ 025 ( 002 \0 " \f \f \v
0001ee0 n " 023 \v l k " 026 \r \0 027 \n F
0001ef0 \r 001 \v 002 @ 002 @ 023 A 001 q \r \0 D \0
0001f00 \0 \0 \0 \0 \0 @ C ! 001 \v A 200 224 � �
0001f10 003 G \r 001 025 022 M \r 001 025 A | j
0001f20 - \0 \0 A 001 q E \r 001 \v D 001 \0 \0 \0 \0
0001f30 \0 @ C ! 001 \v D \0 \0 \0 \0 \0 \0 � ? D
0001f40 \0 \0 \0 \0 \0 \0 � ? D \0 \0 \0 \0 \0 \0 �
0001f50 ? 027 \n F 033 D \0 \0 \0 \0 \0 \0 � ?
0001f60 026 \v A 001 v " 027 F 033 026 027 I
0001f70 033 ! 032 002 @ \a \r \0 \t - \0 \0 A -
0001f80 G \r \0 032 232 ! 032 001 232 ! 001 \v 025
0001f90 \f 026 k " \f 6 002 \0 001 032 �
0001fa0 001 a \r \0 025 \f \v j " \v 6 002 \0
0001fb0 002 @ \v A 200 224 � � 003 I \r \0 003 @
0001fc0 025 A \0 6 002 \0 002 @ 025 A | j " 025
0001fd0 022 O \r \0 022 A | j " 022 A \0 6 002 \0
0001fe0 \v 025 025 ( 002 \0 A 001 j " \v 6 002 \0
0001ff0 \v A � 223 � � 003 K \r \0 \v \v 021
0002000 022 k A 002 u A \t l ! 003 A \n ! \v 022
0002010 ( 002 \0 " \f A \n I \r \0 003 @ 003 A 001
0002020 j ! 003 \f \v A \n l " \v O \r \0 \v
0002030 \v 025 A 004 j " \v \n \n \v K 033
0002040 ! \n \v 002 @ 003 @ \n " \v 022 M " \f
0002050 \r 001 \v A | j " \n ( 002 \0 E \r \0 \v
0002060 \v 002 @ 002 @ 016 A � \0 F \r \0 004 A
0002070 \b q ! 025 \f 001 \v 003 A 177 s A 177 017
0002080 A 001 017 033 " \n 003 J 003 A { J q
0002090 " 025 033 \n j ! 017 A 177 A ~ 025 033
00020a0 005 j ! 005 004 A \b q " 025 \r \0 A w !
00020b0 \n 002 @ \f \r \0 \v A | j ( 002 \0 "
00020c0 025 E \r \0 A \n ! \f A \0 ! \n 025 A \n
00020d0 p \r \0 003 @ \n " 026 A 001 j ! \n 025
00020e0 \f A \n l " \f p E \r \0 \v 026 A 177
00020f0 s ! \n \v \v 021 k A 002 u A \t l !
0002100 \f 002 @ 005 A _ q A � \0 G \r \0 A \0
0002110 ! 025 017 \f \n j A w j " \n A \0
0002120 \n A \0 J 033 " \n 017 \n H 033 ! 017
0002130 \f 001 \v A \0 ! 025 017 003 \f j \n
0002140 j A w j " \n A \0 \n A \0 J 033 " \n
0002150 017 \n H 033 ! 017 \v A 177 ! \f 017 A
0002160 � � � � \a A � � � � \a 017 025 r
0002170 " 026 033 J \r 001 017 026 A \0 G j A 001
0002180 j ! 027 002 @ 002 @ 005 A _ q " 024 A �
0002190 \0 G \r \0 003 027 A � � � � \a s J
00021a0 \r 003 003 A \0 003 A \0 J 033 ! \n \f 001
00021b0 \v 002 @ \r 003 003 A 037 u " \n s
00021c0 \n k � \r 020 " \n k A 001 J \r \0 003
00021d0 @ \n A 177 j " \n A 0 : \0 \0 \r
00021e0 \n k A 002 H \r \0 \v \v \n A ~ j " 023
00021f0 005 : \0 \0 A 177 ! \f \n A 177 j A -
0002200 A + 003 A \0 H 033 : \0 \0 \r 023 k
0002210 " \n 027 A � � � � \a s J \r 002 \v A
0002220 177 ! \f \n 027 j " \n \b A � � �
0002230 � \a s J \r 001 \0 A 002 \n \b
0002240 j " 027 004 020 ! \0 \t \b 020 033
0002250 \0 A 0 002 027 004 A 200 200 004 s 020 !
0002260 002 @ 002 @ 002 @ 002 @ 024 A � \0 G \r \0
0002270 006 A 020 j A \b r ! 025 006 A 020 j A
0002280 \t r ! 003 021 022 022 021 K 033 " \f
0002290 ! 022 003 @ 022 5 002 \0 003 020 ! \n 002
00022a0 @ 002 @ 022 \f F \r \0 \n 006 A 020
00022b0 j M \r 001 003 @ \n A 177 j " \n A 0 :
00022c0 \0 \0 \n 006 A 020 j K \r \0 \f 002 \v \0
00022d0 \v \n 003 G \r \0 006 A 0 : \0 030
00022e0 025 ! \n \v \0 \n 003 \n k 020 033
00022f0 022 A 004 j " 022 021 M \r \0 \v 002 @ 026
0002300 E \r \0 \0 A � \b A 001 020 033 \v 022
0002310 \v O \r 001 017 A 001 H \r 001 003 @ 002 @
0002320 022 5 002 \0 003 020 " \n 006 A 020 j M
0002330 \r \0 003 @ \n A 177 j " \n A 0 : \0 \0
0002340 \n 006 A 020 j K \r \0 \v \v \0 \n
0002350 017 A \t 017 A \t H 033 020 033 017 A w
0002360 j ! \n 022 A 004 j " 022 \v O \r 003
0002370 017 A \t J ! \f \n ! 017 \f \r \0 \f 003
0002380 \v \0 \v 002 @ 017 A \0 H \r \0 \v 022
0002390 A 004 j \v 022 K 033 ! 026 006 A 020 j
00023a0 A \b r ! 021 006 A 020 j A \t r ! 003
00023b0 022 ! \v 003 @ 002 @ \v 5 002 \0 003 020
00023c0 " \n 003 G \r \0 006 A 0 : \0 030 021
00023d0 ! \n \v 002 @ 002 @ \v 022 F \r \0 \n
00023e0 006 A 020 j M \r 001 003 @ \n A 177 j "
00023f0 \n A 0 : \0 \0 \n 006 A 020 j K \r \0
0002400 \f 002 \v \0 \v \0 \n A 001 020 033 \n A
0002410 001 j ! \n 017 025 r E \r \0 \0 A �
0002420 \b A 001 020 033 \v \0 \n 017 003 \n
0002430 k " \f 017 \f H 033 020 033 017 \f k
0002440 ! 017 \v A 004 j " \v 026 O \r 001 017
0002450 A 177 J \r \0 \v \v \0 A 0 017 A 022 j
0002460 A 022 A \0 020 ! \0 023 \r 023 k 020
0002470 033 \f 002 \v 017 ! \n \v \0 A 0 \n A
0002480 \t j A \t A \0 020 ! \v \0 A 002
0002490 027 004 A 200 � \0 s 020 ! 027 002 027
00024a0 002 J 033 ! \f \f 001 \v \t 005 A 032 t
00024b0 A 037 u A \t q j ! 027 002 @ 003 A \v K
00024c0 \r \0 A \f 003 k ! \n D \0 \0 \0 \0 \0 \0
00024d0 0 @ ! 032 003 @ 032 D \0 \0 \0 \0 \0 \0 0
00024e0 @ � ! 032 \n A 177 j " \n \r \0 \v 002 @
00024f0 027 - \0 \0 A - G \r \0 032 001 232
0002500 032 � � 232 ! 001 \f 001 \v 001 032 � 032
0002510 � ! 001 \v 002 @ 006 ( 002 , " \n \n A
0002520 037 u " \n s \n k � \r 020 " \n
0002530 \r G \r \0 006 A 0 : \0 017 006 A 017 j
0002540 ! \n \v \b A 002 r ! 025 005 A q !
0002550 022 006 ( 002 , ! \v \n A ~ j " 026
0002560 005 A 017 j : \0 \0 \n A 177 j A - A +
0002570 \v A \0 H 033 : \0 \0 004 A \b q ! \f
0002580 006 A 020 j ! \v 003 @ \v ! \n 002 @ 002
0002590 @ 001 231 D \0 \0 \0 \0 \0 \0 � A c E \r
00025a0 \0 001 � ! \v \f 001 \v A 200 200 200 200 x !
00025b0 \v \v \n \v A � \f j - \0 \0 022 r
00025c0 : \0 \0 001 \v � � D \0 \0 \0 \0 \0 \0
00025d0 0 @ � ! 001 002 @ \n A 001 j " \v 006
00025e0 A 020 j k A 001 G \r \0 002 @ \f \r \0
00025f0 003 A \0 J \r \0 001 D \0 \0 \0 \0 \0 \0 \0
0002600 \0 a \r 001 \v \n A . : \0 001 \n A 002
0002610 j ! \v \v 001 D \0 \0 \0 \0 \0 \0 \0 \0 b
0002620 \r \0 \v A 177 ! \f A � � � � \a 025
0002630 \r 026 k " 023 j " \n k 003 H \r \0 002
0002640 @ 002 @ 003 E \r \0 \v 006 A 020 j k
0002650 " 022 A ~ j 003 N \r \0 003 A 002 j !
0002660 \v \f 001 \v \v 006 A 020 j k " 022 ! \v
0002670 \v \0 A 002 \n \v j " \n 004
0002680 020 ! \0 027 025 020 033 \0 A 0 002
0002690 \n 004 A 200 200 004 s 020 ! \0 006 A
00026a0 020 j 022 020 033 \0 A 0 \v 022 k A
00026b0 \0 A \0 020 ! \0 026 023 020 033 \0 A
00026c0 002 \n 004 A 200 � \0 s 020 ! \n
00026d0 002 \n 002 J 033 ! \f \v 006 A � 004
00026e0 j $ \0 \f \v - 001 001 177 001 001 ( 002
00026f0 \0 A \a j A x q " 002 A 020 j 6 002 \0
0002700 \0 002 ) 003 \0 002 A \b j ) 003 \0 020 /
0002710 9 003 \0 \v 005 \0 \0 � \v 025 \0 002 @ \0
0002720 \r \0 A \0 017 \v 020 025 \0 6 002 \0 A 177 \v
0002730 004 \0 A * \v 004 \0 020 ' \v 005 \0 A � 026 \v
0002740 023 \0 A \0 A 210 026 6 002 � 026 A \0 020 ( 6
0002750 002 � 026 \v � 002 001 001 177 A 001 ! 003 002 @ 002
0002760 @ \0 E \r \0 001 A � \0 M \r 001 002 @
0002770 002 @ 020 ) ( 002 X ( 002 \0 \r \0 001 A 200
0002780 177 q A 200 � 003 F \r 003 020 025 A 031 6 002 \0
0002790 \f 001 \v 002 @ 001 A � 017 K \r \0 \0
00027a0 001 A ? q A 200 001 r : \0 001 \0 001 A
00027b0 006 v A � 001 r : \0 \0 A 002 017 \v 002 @ 002
00027c0 @ 001 A 200 � 003 I \r \0 001 A 200 @ q
00027d0 A 200 � 003 G \r 001 \v \0 001 A ? q A
00027e0 200 001 r : \0 002 \0 001 A \f v A � 001
00027f0 r : \0 \0 \0 001 A 006 v A ? q A 200
0002800 001 r : \0 001 A 003 017 \v 002 @ 001 A 200 200
0002810 | j A � � ? K \r \0 \0 001 A ? q
0002820 A 200 001 r : \0 003 \0 001 A 022 v A �
0002830 001 r : \0 \0 \0 001 A 006 v A ? q A
0002840 200 001 r : \0 002 \0 001 A \f v A ? q
0002850 A 200 001 r : \0 001 A 004 017 \v 020 025 A 031 6
0002860 002 \0 \v A 177 ! 003 \v 003 017 \v \0 001
0002870 : \0 \0 A 001 \v 024 \0 002 @ \0 \r \0 A \0
0002880 017 \v \0 001 A \0 020 + \v S 001 001 ~ 002
0002890 @ 002 @ 003 A � \0 q E \r \0 001 003
00028a0 A @ j � 206 ! 002 B \0 ! 001 \f 001 \v 003
00028b0 E \r \0 001 A � \0 003 k � 210 002
00028c0 003 � " 004 206 204 ! 002 001 004 206 ! 001 \v
00028d0 \0 001 7 003 \0 \0 002 7 003 \b \v S
00028e0 001 001 ~ 002 @ 002 @ 003 A � \0 q E \r \0
00028f0 002 003 A @ j � 210 ! 001 B \0 ! 002 \f
0002900 001 \v 003 E \r \0 002 A � \0 003 k �
0002910 206 001 003 � " 004 210 204 ! 001 002 004
0002920 210 ! 002 \v \0 001 7 003 \0 \0 002 7
0002930 003 \b \v � 003 002 002 177 002 ~ # \0 A k "
0002940 002 $ \0 002 @ 002 @ 001 B � � � � � �
0002950 � � � \0 203 " 004 B 200 200 200 200 200 200 � �
0002960 C | 004 B 200 200 200 200 200 200 � 200 � 177 |
0002970 Z \r \0 \0 B < 210 001 B 004 206 204 ! 004
0002980 002 @ \0 B � � � � � � � � 017 203 "
0002990 \0 B 201 200 200 200 200 200 200 200 \b T \r \0 004
00029a0 B 201 200 200 200 200 200 200 200 � \0 | ! 005 \f 002
00029b0 \v 004 B 200 200 200 200 200 200 200 200 � \0 | !
00029c0 005 \0 B 200 200 200 200 200 200 200 200 \b R \r 001
00029d0 005 004 B 001 203 | ! 005 \f 001 \v 002 @
00029e0 \0 P 004 B 200 200 200 200 200 200 � � � \0 T
00029f0 004 B 200 200 200 200 200 200 � � � \0 Q 033 \r
0002a00 \0 \0 B < 210 001 B 004 206 204 B � � �
0002a10 � � � � 003 203 B 200 200 200 200 200 200 200 � �
0002a20 \0 204 ! 005 \f 001 \v B 200 200 200 200 200 200 200 �
0002a30 � \0 ! 005 004 B � � � � � � � � �
0002a40 \0 V \r \0 B \0 ! 005 004 B 0 210 � " 003
0002a50 A 221 � \0 I \r \0 002 A 020 j \0 001
0002a60 B � � � � � � ? 203 B 200 200 200 200 200 200
0002a70 � \0 204 " 004 003 A � 210 177 j 020 - 002
0002a80 \0 004 A 201 � \0 003 k 020 . 002 )
0002a90 003 \0 " 004 B < 210 002 A \b j ) 003 \0 B
0002aa0 004 206 204 ! 005 002 @ 004 B � � � � � �
0002ab0 � � 017 203 002 ) 003 020 002 A 020 j A \b
0002ac0 j ) 003 \0 204 B \0 R � 204 " 004 B 201 200 200
0002ad0 200 200 200 200 200 \b T \r \0 005 B 001 | ! 005
0002ae0 \f 001 \v 004 B 200 200 200 200 200 200 200 200 \b R
0002af0 \r \0 005 B 001 203 005 | ! 005 \v 002 A
0002b00 j $ \0 005 001 B 200 200 200 200 200 200 200
0002b10 200 200 177 203 204 � \v 004 \0 # \0 \v 006 \0 \0
0002b20 $ \0 \v 022 001 002 177 # \0 \0 k A p q "
0002b30 001 $ \0 001 \v 024 \0 A 220 227 � 002 $ 002 A
0002b40 220 027 A 017 j A p q $ 001 \v \a \0 # \0 #
0002b50 001 k \v 004 \0 # 002 \v 004 \0 # 001 \v � 002 001
0002b60 003 177 002 @ \0 \r \0 A \0 ! 001 002 @ A \0
0002b70 ( 002 � \r E \r \0 A \0 ( 002 � \r 020 7 !
0002b80 001 \v 002 @ A \0 ( 002 � 025 E \r \0 A \0 (
0002b90 002 � 025 020 7 001 r ! 001 \v 002 @ 020 017 (
0002ba0 002 \0 " \0 E \r \0 003 @ A \0 ! 002 002 @
0002bb0 \0 ( 002 L A \0 H \r \0 \0 020 \v ! 002 \v
0002bc0 002 @ \0 ( 002 024 \0 ( 002 034 F \r \0
0002bd0 \0 020 7 001 r ! 001 \v 002 @ 002 E \r \0
0002be0 \0 020 \f \v \0 ( 002 8 " \0 \r \0 \v \v
0002bf0 020 020 001 017 \v A \0 ! 002 002 @ \0 ( 002
0002c00 L A \0 H \r \0 \0 020 \v ! 002 \v 002 @ 002
0002c10 @ 002 @ \0 ( 002 024 \0 ( 002 034 F \r \0
0002c20 \0 A \0 A \0 \0 ( 002 $ 021 001 \0 032
0002c30 \0 ( 002 024 \r \0 A 177 ! 001 002 \r 001 \f 002
0002c40 \v 002 @ \0 ( 002 004 " 001 \0 ( 002 \b "
0002c50 003 F \r \0 \0 001 003 k � A 001 \0
0002c60 ( 002 ( 021 006 \0 032 \v A \0 ! 001 \0 A \0
0002c70 6 002 034 \0 B \0 7 003 020 \0 B \0 7 002
0002c80 004 002 E \r 001 \v \0 020 \f \v 001 \v 006
0002c90 \0 \0 $ 003 \v 004 \0 # 003 \v \r \0 001
0002ca0 002 003 \0 021 006 \0 \v # 001 001 ~ \0
0002cb0 001 002 � 003 � B 206 204 004 020 : !
0002cc0 005 005 B 210 � 020 8 005 � \v \v � 205
0002cd0 200 200 \0 002 \0 A 200 \b \v � 004 - +
0002ce0 0 X 0 x \0 - 0 X + 0 X 0 X - 0
0002cf0 x + 0 x 0 x \0 n a n \0 i n f \0
0002d00 N A N \0 I N F \0 . \0 ( n u l l )
0002d10 \0 H e l l o W o r l d \n \0 1
0002d20 + 2 = % d \n \0 031 \0 \n \0 031
0002d30 031 031 \0 \0 \0 \0 005 \0 \0 \0 \0 \0 \0 \t \0 \0
0002d40 \0 \0 \v \0 \0 \0 \0 \0 \0 \0 \0 031 \0 021 \n 031
0002d50 031 031 003 \n \a \0 001 \0 \t \v 030 \0 \0 \t 006 \v
0002d60 \0 \0 \v \0 006 031 \0 \0 \0 031 031 031 \0 \0 \0 \0
0002d70 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 016 \0 \0 \0
0002d80 \0 \0 \0 \0 \0 031 \0 \n \r 031 031 031 \0 \r \0 \0
0002d90 002 \0 \t 016 \0 \0 \0 \t \0 016 \0 \0 016 \0 \0 \0
0002da0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0
0002db0 \0 \0 \0 \0 \0 \0 \f \0 \0 \0 \0 \0 \0 \0 \0 \0
0002dc0 \0 \0 023 \0 \0 \0 \0 023 \0 \0 \0 \0 \t \f \0 \0
0002dd0 \0 \0 \0 \f \0 \0 \f \0 \0 \0 \0 \0 \0 \0 \0 \0
0002de0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0
0002df0 020 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 017 \0 \0 \0
0002e00 004 017 \0 \0 \0 \0 \t 020 \0 \0 \0 \0 \0 020 \0 \0
0002e10 020 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0
0002e20 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 022 \0 \0 \0 \0 \0
0002e30 \0 \0 \0 \0 \0 \0 021 \0 \0 \0 \0 021 \0 \0 \0 \0
0002e40 \t 022 \0 \0 \0 \0 \0 022 \0 \0 022 \0 \0 032 \0 \0
0002e50 \0 032 032 032 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0
0002e60 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 032 \0 \0
0002e70 \0 032 032 032 \0 \0 \0 \0 \0 \0 \t \0 \0 \0 \0 \0
0002e80 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0
0002e90 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 024 \0
0002ea0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 027 \0 \0 \0 \0 027
0002eb0 \0 \0 \0 \0 \t 024 \0 \0 \0 \0 \0 024 \0 \0 024 \0
0002ec0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0
0002ed0 \0 \0 \0 \0 \0 \0 \0 \0 026 \0 \0 \0 \0 \0 \0 \0
0002ee0 \0 \0 \0 \0 025 \0 \0 \0 \0 025 \0 \0 \0 \0 \t 026
0002ef0 \0 \0 \0 \0 \0 026 \0 \0 026 \0 \0 0 1 2 3 4
0002f00 5 6 7 8 9 A B C D E F \0 A � \f \v
0002f10 224 001 005 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 001 \0
0002f20 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0
0002f30 \0 \0 \0 \0 \0 \0 002 \0 \0 \0 003 \0 \0 \0 � 006
0002f40 \0 \0 \0 004 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 001 \0
0002f50 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 � �
0002f60 � � \n \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0
0002f70 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0
*
0002fa0 \0 \0 0 006 \0 \0
0002fa6

🚜 Drafting 🚧​

  • WebAssembly is like Assembly, except that
    • it runs cross-platform
    • it runs isolated
    • it runs on browsers
  • But how is WASM fast and cross-platform simultaneously?
    • Does it pack multiple precompiled binary executables for multiple CPU vendors, like Apple's Universal Binary?
    • But then, whenever a new type of CPU gets announced, they wouldn't be able to run existing WASMs
  • WebAssembly's runtime environments (RE) are low-level virtual stack machines (akin to JVM or Flash VM)
  • Seems like WASM is closer to intermediate Java Byte Code instead of the genuinely low-level Assembly.
    • But then, why is it faster?
    • JS Interpreter can skip the parsing
    • It can ship in a much more compact file format
  • WASM is just like Java Byte-code. Java Byte-code is cross-platform when machine code for a real CPU is not. It's input for a JIT compiler that targets whatever real CPU. Peter Cordes
  • WASM defines its own _CPU standards and Assembly: WebAssembly Core Specification.
  • To run WASM, the browser must still compile the WASM code into ASM code when executing; in that way, it is much slower than WASM.
  • However, WASM is designed similarly to ASM. Therefore, compiling WASM to ASM targeting x86, ARM, and RISC-V, is comparably easy, and existing compilers emitting ASM can also emit WASM with a reasonable modification.
  • What is the relationship between WebAssembly and Assembly?
  • It is a specific purpose Assembly.
  • It's designed with a specific abstract machine that would be expensive to implement in hardware.

References​

  1. WebAssembly
  2. How is WebAssembly cross-platform when Assembly is not? - Stack Overflow