2025-04-23 - i586mmxcpuid.asm

;; (C) David Vajda
;; i586/AMD64 CPUID MMX in One
;; 2025-04-21
    global _start
    section .data
        op1mmx:     db     "aaaa", "aaaa", 10, 13
        op2mmx:     db     0, 1, 2, 3, 4, 5, 6, 7
        cpuidstr:   db     "0000", "0000", "0000", 10, 13
    section .text
    _start:

    movq xmm1, [op1mmx]
    movq xmm2, [op2mmx]
    paddb xmm1, xmm2
    movq [op1mmx], xmm1

    mov ecx, op1mmx
    mov edx, 0x0a
    mov ebx, 0x01
    mov eax, 0x04
    int 0x80

    paddw xmm1, xmm2
    movq [op1mmx], xmm1

    mov ecx, op1mmx
    mov edx, 0x0a
    mov ebx, 0x01
    mov eax, 0x04
    int 0x80

    mov eax, 0x00
    cpuid
    mov [cpuidstr+0], ebx
    mov [cpuidstr+4], edx
    mov [cpuidstr+8], ecx
    mov ecx, cpuidstr
    mov edx, 14
    mov ebx, 0x01
    mov eax, 0x04
    int 0x80

    mov eax, 0x01
    mov ebx, 0x00
    int 0x80