From a9c16b8c3976dbd2c386586cdf143150a4266ac0 Mon Sep 17 00:00:00 2001 From: chriseth Date: Mon, 16 Apr 2018 12:46:48 +0200 Subject: Add documentation. --- docs/assembly.rst | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'docs') diff --git a/docs/assembly.rst b/docs/assembly.rst index 705cd1b8..978e71e3 100644 --- a/docs/assembly.rst +++ b/docs/assembly.rst @@ -405,6 +405,16 @@ changes during the call, and thus references to local variables will be wrong. } } +.. note:: + If you access variables of a type that spans less than 256 bits + (for example ``uint64``, ``address``, ``bytes16`` or ``byte``), + you cannot make any assumptions about bits not part of the + encoding of the type. Especially, do not assume them to be zero. + To be safe, always clear the data properly before you use it + in a context where this is important: + ``uint32 x = f(); assembly { x := and(x, 0xffffffff) /* now use x */ }`` + To clean signed types, you can use the ``signextend`` opcode. + Labels ------ -- cgit v1.2.3