complex IF statement in assembly

后端 未结 2 1335
故里飘歌
故里飘歌 2020-12-29 08:17

How should I write such an if statement in assembly?

if ((a == b AND a > c) OR c == b) { ...

Platform: Intel 32-bit machine

2条回答
  •  自闭症患者
    2020-12-29 08:34

    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
    

提交回复
热议问题