NASM Forum > Other Discussion

CPU emulator

(1/1)

shaynox:
Hello, do you know how use avx in machine emulator ? I have already tried qemu/bochs/Hyper-V, but no one work, it's reboot instead read avx instruction then jump into infinite loop.
My test project is in attachment.

(This project is build with windows)

shaynox:
Well thanks.

The answer was simple finally: code ourselves the instructions into macros.

But I decided to pass this project and use a real machine instead.

shaynox:
Maybe, but the problem of machine emulator is that they have more than 1 incompatibility with my OS, I forgot how many, there is the LFB address as example that is different, but when using it with real machine, the problem disappear.

fredericopissarra:
You must check if the emulated processor has support for AVX (or AVX2):


--- Code: ---  bits  64
  default rel

  section .text

  global  supports_avx
  global  supports_avx2

;
; SysV and MS calling convention mandates RBX must be
; saved between calls. I usualy use asm routines from C functions!
;

supports_avx:
  push  rbx
  mov   eax,1
  cpuid
  xor   eax,eax
  test  ecx,1 << 28
  setnz al
  pop   rbx
  ret

supports_avx2:
  push  rbx
  xor   ecx,ecx
  mov   eax,7
  cpuid
  xor   eax,eax
  test  ebx,1 << 5
  setnz al
  pop   rbx
  ret
--- End code ---

Here's some features from Intel's Software Development Manuals:

Navigation

[0] Message Index

Go to full version