How should I write such an if
statement in assembly?
if ((a == b AND a > c) OR c == b) { ...
Platform: Intel 32-bit machine
In generic assembly, it will be basically something like this (a
in ax
, b
in bx
, c
in cx
):
cmp bx, cx
jeq istrue
cmp ax, cx
jle isfalse
cmp ax, bx
jeq istrue
isfalse:
; do false bit
jmp nextinstr
istrue:
; do true bit
nextinstr:
; carry on
If there's no false bit, it can be simplified to:
cmp bx, cx
jeq istrue
cmp ax, bx
jne nextinstr
cmp ax, cx
jle nextinstr
istrue:
; do true bit
nextinstr:
; carry on