diff options
author | chriseth <c@ethdev.com> | 2016-05-08 22:24:47 +0800 |
---|---|---|
committer | chriseth <c@ethdev.com> | 2016-05-12 18:30:48 +0800 |
commit | 67ca3bb4b9b43faadb1d6a07f868c94bae146c1e (patch) | |
tree | 9ca400548764845c9d9977ed0ac3dc6ac4ffde9c /docs | |
parent | 1ab0f25dffe19f2cc9e1a0e2fa03a1091679f5a0 (diff) | |
download | dexon-solidity-67ca3bb4b9b43faadb1d6a07f868c94bae146c1e.tar.gz dexon-solidity-67ca3bb4b9b43faadb1d6a07f868c94bae146c1e.tar.zst dexon-solidity-67ca3bb4b9b43faadb1d6a07f868c94bae146c1e.zip |
Allow access to functions in inline assembly.
Diffstat (limited to 'docs')
-rw-r--r-- | docs/control-structures.rst | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/docs/control-structures.rst b/docs/control-structures.rst index 2d959d1d..08bcb6ca 100644 --- a/docs/control-structures.rst +++ b/docs/control-structures.rst @@ -452,8 +452,8 @@ Note that the order of arguments is reversed in functional-style as opposed to t way. If you use functional-style, the first argument will end up on the stack top. -Access to External Variables ----------------------------- +Access to External Variables and Functions +------------------------------------------ Solidity variables and other identifiers can be accessed by simply using their name. For storage and memory variables, this will push the address and not the value onto the @@ -461,6 +461,17 @@ stack. Also note that non-struct and non-array storage variable addresses occupy on the stack: One for the address and one for the byte offset inside the storage slot. In assignments (see below), we can even use local Solidity variables to assign to. +Functions external to inline assembly can also be accessed: The assemble will +push their entry label (with virtual function resolution applied). The calling semantics +in solidity are: + + - the caller pushes return label, arg1, arg2, ..., argn + - the call returns with ret1, ret2, ..., retn + +This feature is still a bit cumbersome to use, because the stack offset essentially +changes during the call, and thus references to local variables will be wrong. +It is planned that the stack height changes can be specified in inline assembly. + .. code:: contract c { |