go-vsoa/protocol/message_amd64.s
2023-10-11 11:14:41 +08:00

260 lines
4.8 KiB
ArmAsm

// Copyright (c) 2023 ACOAUTO Team.
// All rights reserved.
//
// Detailed license information can be found in the LICENSE file.
//
// File: message_amd64.s Vehicle SOA protocal package.
//
// Author: Cheng.siyuan <chengsiyuan@acoinfo.com>
#include "textflag.h"
TEXT ·smn(SB), NOSPLIT, $0
MOVQ smn+0(FP), BX
MOVW $0x29, AX
MOVB AX, 0(BX)
RET
TEXT ·cmn(SB), NOSPLIT, $0
MOVB cmn+0(FP), AX
MOVW $0x29, BX
CMPB AX, BX
JNE cmnn
MOVW $0xef, r+16(FP)
RET
cmnn:
MOVW $0x00, r+16(FP)
RET
TEXT ·vs(SB), NOSPLIT, $0
MOVB vs+0(FP), AX
SHRB $4, AX
MOVB AX, ret+16(FP)
RET
TEXT ·msgt(SB), NOSPLIT, $0
MOVB msgt+1(FP), AX
MOVB AX, ret+16(FP)
RET
TEXT ·smt(SB), NOSPLIT, $0
MOVQ smt+0(FP), BX
MOVB mt+8(FP), AX
MOVB AX, 1(BX)
RET
TEXT ·spe(SB), NOSPLIT, $0
MOVQ smt+0(FP), BX
MOVB $0xff, AX
MOVB AX, 1(BX)
RET
TEXT ·ir(SB), NOSPLIT, $0
MOVB cmn+1(FP), AX
MOVW $0x01, BX
CMPB AX, BX
JNE irn
MOVW $0x01, r+16(FP)
RET
irn:
MOVW $0x00, r+16(FP)
RET
TEXT ·ipe(SB), NOSPLIT, $0
MOVB ipe+1(FP), AX
MOVW $0xff, BX
CMPB AX, BX
JNE ipen
MOVW $0x01, r+16(FP)
RET
ipen:
MOVW $0x00, r+16(FP)
RET
TEXT ·isi(SB), NOSPLIT, $0
MOVB isi+1(FP), AX
MOVW $0x00, BX
CMPB AX, BX
JNE isin
MOVW $0x01, r+16(FP)
RET
isin:
MOVW $0x00, r+16(FP)
RET
TEXT ·iss(SB), NOSPLIT, $0
MOVB iss+1(FP), AX
MOVW $0x02, BX
CMPB AX, BX
JNE issn
MOVW $0x01, r+16(FP)
RET
issn:
MOVW $0x00, r+16(FP)
RET
TEXT ·ius(SB), NOSPLIT, $0
MOVB ius+1(FP), AX
MOVW $0x03, BX
CMPB AX, BX
JNE iusn
MOVW $0x01, r+16(FP)
RET
iusn:
MOVW $0x00, r+16(FP)
RET
TEXT ·id(SB), NOSPLIT, $0
MOVB id+1(FP), AX
MOVW $0x05, BX
CMPB AX, BX
JNE idn
MOVW $0x01, r+16(FP)
RET
idn:
MOVW $0x00, r+16(FP)
RET
TEXT ·ip(SB), NOSPLIT, $0
MOVB ip+1(FP), AX
MOVW $0x04, BX
CMPB AX, BX
JNE ipn
MOVW $0x01, r+16(FP)
RET
ipn:
MOVW $0x00, r+16(FP)
RET
TEXT ·iR(SB), NOSPLIT, $0
MOVB iR+2(FP), AX
ANDB $0x01, AX
MOVB AX, r+16(FP)
RET
TEXT ·sRt(SB), NOSPLIT, $0
MOVQ sRt+0(FP), BX
MOVQ $0x01, AX
ORB AX, 2(BX)
RET
TEXT ·sRf(SB), NOSPLIT, $0
MOVQ sRt+0(FP), BX
MOVQ $0xfe, AX
ANDB AX, 2(BX)
RET
TEXT ·ivt(SB), NOSPLIT, $0
MOVB ivt+2(FP), AX
ANDB $0x02, AX
SHRB $1, AX
MOVB AX, r+16(FP)
RET
TEXT ·svt(SB), NOSPLIT, $0
MOVQ svt+0(FP), BX
MOVQ $0x02, AX
ORB AX, 2(BX)
RET
TEXT ·mrm(SB), NOSPLIT, $0
MOVB mrm+2(FP), AX
ANDB $0x04, AX
SHRB $2, AX
MOVB AX, r+16(FP)
RET
TEXT ·smrmg(SB), NOSPLIT, $0
MOVQ smrmg+0(FP), BX
MOVQ $0xfb, AX
ANDB AX, 2(BX)
RET
TEXT ·smrms(SB), NOSPLIT, $0
MOVQ smrms+0(FP), BX
MOVQ $0x04, AX
ORB AX, 2(BX)
RET
TEXT ·pl(SB), NOSPLIT, $0
MOVB pl+2(FP), AX
SHRB $6, AX
MOVB AX, ret+16(FP)
RET
TEXT ·spl(SB), NOSPLIT, $0
MOVQ spl+0(FP), BX
MOVB spl+8(FP), DX
MOVQ $0x3f, AX
ANDB AX, 2(BX)
SHLB $6, DX
MOVQ $0xc0, AX
ANDB AX, DX
ORB DX, 2(BX)
RET
TEXT ·st(SB), NOSPLIT, $0
MOVQ st+3(FP), AX
MOVB AX, r+16(FP)
RET
TEXT ·sst(SB), NOSPLIT, $0
MOVQ sst+0(FP), AX
MOVQ sst+8(FP), BX
MOVB BX, 3(AX)
RET
TEXT ·sn(SB), NOSPLIT, $0
MOVB sn+4(FP), AX
MOVB sn+5(FP), BX
MOVB sn+6(FP), CX
MOVB sn+7(FP), DX
SHLQ $8, AX
ORB BX, AX
SHLQ $8, AX
ORB CX, AX
SHLQ $8, AX
ORB DX, AX
MOVQ AX, ret+16(FP)
RET
TEXT ·ssn(SB), NOSPLIT, $0
MOVQ ssn+0(FP), AX
MOVQ ssn+8(FP), BX
MOVQ BX, CX
ANDQ $0xff ,BX
MOVB BX, 7(AX)
MOVQ CX, BX
SHRQ $8, BX
ANDQ $0xff ,BX
MOVB BX, 6(AX)
MOVQ CX, BX
SHRQ $16, BX
ANDQ $0xff ,BX
MOVB BX, 5(AX)
MOVQ CX, BX
SHRQ $24, BX
ANDQ $0xff ,BX
MOVB BX, 4(AX)
RET
TEXT ·tid(SB), NOSPLIT, $0
MOVB tid+8(FP), AX
MOVB tid+9(FP), BX
SHLW $8, AX
ORB BX, AX
MOVW AX, ret+16(FP)
RET
TEXT ·stid(SB), NOSPLIT, $0
MOVQ ssn+0(FP), AX
MOVQ ssn+8(FP), BX
MOVQ BX, CX
ANDQ $0xff ,BX
MOVB BX, 9(AX)
MOVQ CX, BX
SHRQ $8, BX
ANDQ $0xff ,BX
MOVB BX, 8(AX)
RET