Skip to main content

  | मौसम…

411 समाचार
Public archive edition · Attributed source reporting with original dates · AI drafts are excluded

411 REFERENCE · Wikibooks

X86 Assembly/Logic

Reference material by Wikibooks contributors. This retains its source identity and is not 411 news reporting.

Logical instructions The instructions on this page deal with bit-wise logical instructions. For more information about bit-wise logic, see Digital Circuits/Logic Operations. All logical instructions presented in this section are executed in the ALU, as the name already suggests, the arithmetic logic unit. binary operations These instructions require two operands. logical and and mask destination operation and performs a bit-wise and of the two operands, and stores the result in destination. side effects See below. example movl $0x1, %edx ; edx ≔ 1 movl $0x0, %ecx ; ecx ≔ 0 andl %edx, %ecx ; ecx ≔ edx ∧ ecx ; here ecx would be 0 because 1 ∧ 0 ⇔ 0 application An and can be used to calculate the intersection of two “sets”, or a value representing a “mask”. Some programming language require that Boolean values are stored exactly as either 1 or 0. An and rax, 1 will ensure only the LSB least-significant bit is set, or not set. If partial register addressing is not available in the desired size, an and can be used for a operation, that is the remainder of integer division. For that, mask has to contain the value (i. e. all lower bits set until a certain threshold), where equals your desired divisor. logical or or addend destination operation The or instruction performs a bit-wise or of the two operands, and stores the result in destination. side effects See below. example movl $0x1, %edx ; edx ≔ 1 movl $0x0, %ecx ; ecx ≔ 0 orl %edx, %ecx ; ecx ≔ edx ∨ ecx ; here ecx would be 1 because 1 ∨ 0 ⇔ 1 application An or can be used to calculate the union of two “sets”, or a value representing a “mask”. logical xor xor flip destination operation Performs a bit-wise xor of the two operands, and stores the result in destination. side effects See below. example movl $0x1, %edx ; edx ≔ 1 movl $0x0, %ecx ; ecx ≔ 0 xorl %edx, %ecx ; ecx ≔ edx ⊕ ecx ; here ecx would be 1 because 1 ⊕ 0 ⇔ 1 application xor rax, rax (or any GPR general-purpose register twice) will clear all bits. It is a specially recognized word. However, since xor affects flags it might introduce bogus dependencies. common remarks side effects for and, or, and xor OF overflow flag ≔ 0 CF carry flag ≔ 0 SF sign flag becomes the value of the most significant bit of the calculated result ZF zero flag ≔ result = 0 PF parity flag is set according to the result unary operations logical not not argument operation Performs a bit-wise inversion of argument. side-effects None. example movl $0x1, %edx ; edx ≔ 1 notl %edx ; edx ≔ ¬edx ; here edx would be 0xFFFFFFFE because a bitwise NOT 0x00000001 = 0xFFFFFFFE application not is frequently used to get a register with all bits set.