Examine individual changes
This page allows you to examine the variables generated by the Abuse Filter for an individual change.
Variables generated for this change
| Variable | Value |
|---|---|
Edit count of the user (user_editcount) | 0 |
Name of the user account (user_name) | 'Pasztor' |
Age of the user account (user_age) | 36 |
Page ID (page_id) | 9736 |
Page namespace (page_namespace) | 0 |
Page title (without namespace) (page_title) | 'Mov' |
Full page title (page_prefixedtitle) | 'Mov' |
Action (action) | 'edit' |
Edit summary/reason (summary) | 'typo fix' |
Old content model (old_content_model) | 'wikitext' |
New content model (new_content_model) | 'wikitext' |
Old page wikitext, before the edit (old_wikitext) | '{{lowercase}}
'''<code>mov</code>''' is an x86 assembly instruction identified to be Turing-complete by [[Stephen Dolan]] in ''mov is Turing-complete''<ref>S. Dolan, 2013. ''mov'' is Turing-complete. Preprint. https://drwho.virtadpt.net/files/mov.pdf https://harrisonwl.github.io/assets/courses/malware/spring2017/papers/mov-is-turing-complete.pdf</ref> and developed further by xoreaxeaxeax in [https://github.com/xoreaxeaxeax/movfuscator Movfuscator]. It may also be considered the basis of a [[OISC|one instruction set computer]] archtecture which (unlike [[Subleq]]) does not have to use self modifying code.
== About the <code>mov</code> instruction ==
The <code>mov</code> instruction has a number of different forms. Let r1,r2 denote registers, then for example:
* mov r1, 42 % store the number 42 in r1
* mov r1, r2 % fetch the value in r2 and store it in r1
* mov [r1], 42 % store the number 42 in the address the register r1 points to
* mov r1, [r2] % fetch the value the address in register r2 points to and store it in r1
* mov [r1], r2 % store the value register r2 in the address the register r1 points to
The expressions in brackets can also include +offsets or even adding two register together. All of these features are made use of in different encodings.
== Equality Test ==
To test equality of 'x' and 'y':
mov [x], 0
mov [y], 1
mov result, [x]
This works by having a large array which is written into and read back out from. If x = y the readback will give 1 and it would be 0 otherwise.
== Arithmetic and Logic ==
Arithmetic and logic gates can be encoded using lookup tables. For example to find the xor of x and y we have the following lookup tables
xor_xy: dd xor_0y, xor_1y
xor_0y: dd 0, 1
xor_1y: dd 1, 0
and the code is
mov r1,[xor_xy+x]
mov r2,[y]
mov result,[r1+r2]
== As a compilation target ==
The movfuscator repo contains an example compiler from [[brainfuck]] to <code>mov</code> instructions. The author also wrote an lcc (C compiler) backend for it. The result is extremely long linear code with no branches which can cause reverse engineering tools to crash.
== References ==
<references />
[[Category:Esoteric subset]]
[[Category:Computational models]]
[[Category:Turing complete]]
[[Category:Before 1993]]
[[Category:2013]]
[[Category:Implemented]]
[[Category:OISC]]
[[Category:Languages]]' |
New page wikitext, after the edit (new_wikitext) | '{{lowercase}}
'''<code>mov</code>''' is an x86 assembly instruction identified to be Turing-complete by [[Stephen Dolan]] in ''mov is Turing-complete''<ref>S. Dolan, 2013. ''mov'' is Turing-complete. Preprint. https://drwho.virtadpt.net/files/mov.pdf https://harrisonwl.github.io/assets/courses/malware/spring2017/papers/mov-is-turing-complete.pdf</ref> and developed further by xoreaxeaxeax in [https://github.com/xoreaxeaxeax/movfuscator Movfuscator]. It may also be considered the basis of a [[OISC|one instruction set computer]] architecture which (unlike [[Subleq]]) does not have to use self modifying code.
== About the <code>mov</code> instruction ==
The <code>mov</code> instruction has a number of different forms. Let r1,r2 denote registers, then for example:
* mov r1, 42 % store the number 42 in r1
* mov r1, r2 % fetch the value in r2 and store it in r1
* mov [r1], 42 % store the number 42 in the address the register r1 points to
* mov r1, [r2] % fetch the value the address in register r2 points to and store it in r1
* mov [r1], r2 % store the value register r2 in the address the register r1 points to
The expressions in brackets can also include +offsets or even adding two register together. All of these features are made use of in different encodings.
== Equality Test ==
To test equality of 'x' and 'y':
mov [x], 0
mov [y], 1
mov result, [x]
This works by having a large array which is written into and read back out from. If x = y the readback will give 1 and it would be 0 otherwise.
== Arithmetic and Logic ==
Arithmetic and logic gates can be encoded using lookup tables. For example to find the xor of x and y we have the following lookup tables
xor_xy: dd xor_0y, xor_1y
xor_0y: dd 0, 1
xor_1y: dd 1, 0
and the code is
mov r1,[xor_xy+x]
mov r2,[y]
mov result,[r1+r2]
== As a compilation target ==
The movfuscator repo contains an example compiler from [[brainfuck]] to <code>mov</code> instructions. The author also wrote an lcc (C compiler) backend for it. The result is extremely long linear code with no branches which can cause reverse engineering tools to crash.
== References ==
<references />
[[Category:Esoteric subset]]
[[Category:Computational models]]
[[Category:Turing complete]]
[[Category:Before 1993]]
[[Category:2013]]
[[Category:Implemented]]
[[Category:OISC]]
[[Category:Languages]]' |
Unified diff of changes made by edit (edit_diff) | '@@ -1,4 +1,4 @@
{{lowercase}}
-'''<code>mov</code>''' is an x86 assembly instruction identified to be Turing-complete by [[Stephen Dolan]] in ''mov is Turing-complete''<ref>S. Dolan, 2013. ''mov'' is Turing-complete. Preprint. https://drwho.virtadpt.net/files/mov.pdf https://harrisonwl.github.io/assets/courses/malware/spring2017/papers/mov-is-turing-complete.pdf</ref> and developed further by xoreaxeaxeax in [https://github.com/xoreaxeaxeax/movfuscator Movfuscator]. It may also be considered the basis of a [[OISC|one instruction set computer]] archtecture which (unlike [[Subleq]]) does not have to use self modifying code.
+'''<code>mov</code>''' is an x86 assembly instruction identified to be Turing-complete by [[Stephen Dolan]] in ''mov is Turing-complete''<ref>S. Dolan, 2013. ''mov'' is Turing-complete. Preprint. https://drwho.virtadpt.net/files/mov.pdf https://harrisonwl.github.io/assets/courses/malware/spring2017/papers/mov-is-turing-complete.pdf</ref> and developed further by xoreaxeaxeax in [https://github.com/xoreaxeaxeax/movfuscator Movfuscator]. It may also be considered the basis of a [[OISC|one instruction set computer]] architecture which (unlike [[Subleq]]) does not have to use self modifying code.
== About the <code>mov</code> instruction ==
' |
New page size (new_size) | 2384 |
Old page size (old_size) | 2383 |
Lines added in edit (added_lines) | [
0 => ''''<code>mov</code>''' is an x86 assembly instruction identified to be Turing-complete by [[Stephen Dolan]] in ''mov is Turing-complete''<ref>S. Dolan, 2013. ''mov'' is Turing-complete. Preprint. https://drwho.virtadpt.net/files/mov.pdf https://harrisonwl.github.io/assets/courses/malware/spring2017/papers/mov-is-turing-complete.pdf</ref> and developed further by xoreaxeaxeax in [https://github.com/xoreaxeaxeax/movfuscator Movfuscator]. It may also be considered the basis of a [[OISC|one instruction set computer]] architecture which (unlike [[Subleq]]) does not have to use self modifying code.'
] |
Unix timestamp of change (timestamp) | '1776150015' |