Cheat Engine Forum Index Cheat Engine
The Official Site of Cheat Engine
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 


SEE/SIMD Layout? Advanced help needed >_<

 
Post new topic   Reply to topic    Cheat Engine Forum Index -> General Gamehacking
View previous topic :: View next topic  
Author Message
blueboy90780
Newbie cheater
Reputation: 0

Joined: 18 Dec 2016
Posts: 14
Location: Vietnam

PostPosted: Fri Feb 17, 2017 5:04 am    Post subject: SEE/SIMD Layout? Advanced help needed >_< Reply with quote

So, after banging my head on the wall several times trying to learn the x86 assembly language, I finally managed to understand everything of it.

However, my question is related to the 64 bit assembly language, there was no tutorial online on how to actually use the SIMD/SSE instructions, so I had to search up a generic one up with hope that it has at least some similarities to the syntax of Cheat Engine (which I later discovered it was MASM assembler).

As far as I can understand, SSE instructions are instructions in which we can manipulate specific memory inside a register

From the FPU layout, how are we able to tell which part is the lower byte/word/double word? and which one is the higher byte/word/double-word.

- There are 4 different values that are can be stored in a XMM register, out of those - how are we pick out a specific value out of those four?

- How can we tell if a float is "arithmetically aligned" from looking at the FPU

- What on Earth is "signed saturation" floating point value?

I hope you get a general idea of where I am going at, I understand the fundamentals - I just understand how to actually use it.

P:S: All the terms I mentioned here are from an online assembly tutorial



Cheat Engine SSE.PNG
 Description:
 Filesize:  71.2 KB
 Viewed:  7166 Time(s)

Cheat Engine SSE.PNG


Back to top
View user's profile Send private message
ParkourPenguin
I post too much
Reputation: 152

Joined: 06 Jul 2014
Posts: 4702

PostPosted: Fri Feb 17, 2017 9:50 am    Post subject: Reply with quote

SSE is a set of instruction set extensions. It does not have any correlation to whether the processor's architecture is 32-bit or 64-bit, and it's execution environment is separate from that of the FPU. Labeling that entire window "FPU" is a misnomer in that regard.

XMM0-7 are a collection of 8 128-bit registers. Each register can store any type of data that takes up 128 bits. Usually, applications use these registers to store up to 4 floats or up to 2 doubles. These registers can be accessed and modified by instructions provided in the SSE extensions. For a detailed list and documentation of such instructions, see Intel 64 & IA-32 Architectures Software Developer Manuals Volume 1 sections 5.5 - 5.12. Note that older processors may not support all extensions.

I don't know what "arithmetically aligned" is suppose to mean. Perhaps they meant data alignment, where the data has to be aligned in memory in order to access it. Some instructions impose this requirement so that they can run faster than their unaligned counterparts (e.g. movaps vs movups).

"Signed saturation floating point value" probably refers to something in saturation arithmetic. I would rather not write a long explanation on how floating point encoding and arithmetic works, so I'll just link to a Wikipedia article on it.

_________________
I don't know where I'm going, but I'll figure it out when I get there.
Back to top
View user's profile Send private message
SunBeam
I post too much
Reputation: 65

Joined: 25 Feb 2005
Posts: 4023
Location: Romania

PostPosted: Fri Feb 17, 2017 10:58 am    Post subject: Reply with quote

..you can imagine my shrugging when I read "I finally managed to understand everything of it." Very Happy Very humble, there, sir.
Back to top
View user's profile Send private message
blueboy90780
Newbie cheater
Reputation: 0

Joined: 18 Dec 2016
Posts: 14
Location: Vietnam

PostPosted: Sat Feb 18, 2017 12:47 am    Post subject: Reply with quote

well that wasn't exactly my question, maybe I should rephrase that.

I learnt assembly from a specific link, I would like to source it if Cheat Engine Forum allows me. Basically look up "flat assembler article 1.71" and look for chapter 2.1.15 and click on it to jump - this would explain what I meant after you have a read over it.

If you look at the picture, how would I add XMM1 to the 04CE7748 register? What command would I use?

Apparently, there are a lot of ways to add 2 XMM instructions together, each opcode being specific for a data type. Not only that, but most of the opcode only adds individual byte of the 2 operands.

That's where my question of asking where I can locate the lower byte and higher byte from. And where the lower double-word and word is.

That was my main question and my most important one.
Back to top
View user's profile Send private message
ParkourPenguin
I post too much
Reputation: 152

Joined: 06 Jul 2014
Posts: 4702

PostPosted: Sat Feb 18, 2017 10:08 am    Post subject: Reply with quote

Based on your writing, it's obvious to me that you don't know what you're talking about.
  • 04CE7748 is an address in memory. It is not a register.
  • Adding two instructions together would produce meaningless results.
  • "each opcode being specific for a data type" isn't correct, but I'll overlook this since it's common for people to confuse the term "opcode" with "mnemonic."
  • There is no SSE instruction that adds the lower byte of each operand together.
  • Byte, word, dword, qword, and dqword are the fundamental data types of Intel architecture. Every value type (e.g. integers, pointers, floats, strings) are based off these data types*.
*one exception is that the FPU internally operates on floats using double extended precision floating point format (i.e. 10 bytes).

You should really learn the basics before you try to move on.


To answer your question directly:
blueboy90780 wrote:
If you look at the picture, how would I add XMM1 to the 04CE7748 register? What command would I use?

There is no picture attached to your post, you didn't specify whether it was packed or scalar, and you didn't say whether you were adding floats or doubles, but all of that is irrelevant. There is no way to add a source operand xmm register to a destination operand memory location with a single instruction. Separate it into several instructions.
ParkourPenguin wrote:
For a detailed list and documentation of such instructions, see Intel 64 & IA-32 Architectures Software Developer Manuals Volume 1 sections 5.5 - 5.12.

_________________
I don't know where I'm going, but I'll figure it out when I get there.
Back to top
View user's profile Send private message
blueboy90780
Newbie cheater
Reputation: 0

Joined: 18 Dec 2016
Posts: 14
Location: Vietnam

PostPosted: Sun Feb 19, 2017 2:34 am    Post subject: Reply with quote

right my apologies
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Cheat Engine Forum Index -> General Gamehacking All times are GMT - 6 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum


Powered by phpBB © 2001, 2005 phpBB Group

CE Wiki   IRC (#CEF)   Twitter
Third party websites