term% cat foo.c
#include <u.h>
#include <libc.h>
void
main(void)
{
int i, j, k;
i = 1;
j = 0;
k = j <= 0 ? 1 : 2/i;
print("%d\n", k);
exits(nil);
}
term% 5c -S foo.c
TEXT main+0(SB),0,$20
MOVW $1,R1
MOVW $0,R2
CMP $0,R2,
MOVW.LE R1,R3
BLE ,3(PC)
MOVW $2,R3
DIV R1,R3,R3
MOVW $.string<>+0(SB),R0
MOVW R3,8(R13)
BL ,print+0(SB)
MOVW $0,R0
BL ,exits+0(SB)
RET ,
DATA .string<>+0(SB)/8,$"%d\n\z\z\z\z\z"
GLOBL .string<>+0(SB),$8
END ,
5.out:arm plan 9 executable
/sys/lib/acid/port
/sys/lib/acid/arm
acid: asm(main)
main 0x00001020 MOVW.W R14,#-0x18(R13)
main+0x4 0x00001024 MOVW $#0x1,R1
main+0x8 0x00001028 MOVW $#0x0,R2
main+0xc 0x0000102c CMP.S $#0x0,R2
main+0x10 0x00001030 MOVW.LE R1,R3
main+0x14 0x00001034 B.LE main+0x34
main+0x18 0x00001038 MOVW $#0x2,R3
main+0x1c 0x0000103c SUB $#0x8,R13,R13
main+0x20 0x00001040 MOVW R1,#0x4(R13)
main+0x24 0x00001044 MOVW R3,R11
main+0x28 0x00001048 BL _div
main+0x2c 0x0000104c MOVW R11,R3
main+0x30 0x00001050 ADD $#0x8,R13,R13
main+0x34 0x00001054 MOVW $#0x7084,R0
main+0x38 0x00001058 MOVW R3,#0x8(R13)
main+0x3c 0x0000105c BL print
main+0x40 0x00001060 MOVW $#0x0,R0
main+0x44 0x00001064 BL exits
main+0x48 0x00001068 RET.P #0x18(R13)
_main 0x0000106c MOVW.W R14,#-0x54(R13)
acid:
--
cinap