OSDev Series: IA32 machine language

This forums is for OS project announcements including project openings, new releases, update notices, test requests, and job openings (both paying and volunteer).
Post Reply
User avatar
neon
Member
Member
Posts: 1567
Joined: Sun Feb 18, 2007 7:28 pm
Contact:

OSDev Series: IA32 machine language

Post by neon »

Hello everyone,

This is the initial release for the OSDev Series advanced chapter covering IA32 and IA64 machine language. It provides an introduction to machine language topics, instruction encoding, using instruction look-up tables, and some examples of translating instructions. I feel that this might be a good supplemental material to the OSDev Wikis' article as it presents the information in a different way.

We are transitioning to a different writing environment for the series to present a standard formatting method and resolve spelling errors that are present in earlier chapters. Please let me know if there are any formatting oddities.

OSDev Series: IA32 Machine Language

Please let me know if there are any questions or comments.

Thanks,
~Mike ();
*edit: fixed invalid link
Last edited by neon on Mon Dec 19, 2011 2:04 pm, edited 1 time in total.
OS Development Series | Wiki | os | ncc
char c[2]={"\x90\xC3"};int main(){void(*f)()=(void(__cdecl*)(void))(void*)&c;f();}
stlw
Member
Member
Posts: 357
Joined: Fri Apr 04, 2008 6:43 am
Contact:

Re: OSDev Series: IA32 machine language

Post by stlw »

neon wrote:Hello everyone,

We are transitioning to a different writing environment for the series to present a standard formatting method and resolve spelling errors that are present in earlier chapters. Please let me know if there are any formatting oddities.

OSDev Series: IA32 Machine Language

Please let me know if there are any questions or comments.

Thanks,
~Mike ();
I have error 404 on that link
CrypticalCode0
Member
Member
Posts: 81
Joined: Wed Nov 09, 2011 2:21 am
Location: Behind a keyboard located in The Netherlands

Re: OSDev Series: IA32 machine language

Post by CrypticalCode0 »

Neon it's a great guide a little to basic for me personally but it does serve it's purpose.
User avatar
Jezze
Member
Member
Posts: 395
Joined: Thu Jul 26, 2007 1:53 am
Libera.chat IRC: jfu
Contact:

Re: OSDev Series: IA32 machine language

Post by Jezze »

Nice work!
Fudge - Simplicity, clarity and speed.
http://github.com/Jezze/fudge/
ACcurrent
Member
Member
Posts: 125
Joined: Thu Aug 11, 2011 12:04 am
Location: Watching You

Re: OSDev Series: IA32 machine language

Post by ACcurrent »

Beauty just what I was looking for. Now I can write my own 16bit real mode emulator! ITs probably gonna be the first stop for everybody who wants to write an assembler too!
Get back to work!
Github
User avatar
AJ
Member
Member
Posts: 2646
Joined: Sun Oct 22, 2006 7:01 am
Location: Devon, UK
Contact:

Re: OSDev Series: IA32 machine language

Post by AJ »

Hi,

You've got some nicely done tutorials on there and don't always stick to the stuff that's been done loads of times before! Nice work.

Cheers,
Adam
User avatar
Combuster
Member
Member
Posts: 9301
Joined: Wed Oct 18, 2006 3:45 am
Libera.chat IRC: [com]buster
Location: On the balcony, where I can actually keep 1½m distance
Contact:

Re: OSDev Series: IA32 machine language

Post by Combuster »

Nice work.

Some things did strike me as odd though:
Machine language, also known as (...) byte code
Bytecode is generally a term used for non-native binary storage of program code, and is rather out of place as an equivalent term for native code.
IA64
That is the formal designation for Itanium. You might want to replace that with x86-64.
The LOCK prefix can only be used (...)
When the destination is a memory operand and is part of a read-modify-write operation. (in practice, the source being the memory operand is allowed but is normally useless). FOOF bug being a typical example of that.
rex.w
Warning: "rex" used but not defined :wink:. You might want to give a brief introduction to the difference between legacy and long mode before using it that way.
The prefix bytes are identified in 4 classes
repeat(1) segment(2) address(3) operand(4) REX...5? :-k
"Certainly avoid yourself. He is a newbie and might not realize it. You'll hate his code deeply a few years down the road." - Sortie
[ My OS ] [ VDisk/SFS ]
User avatar
neon
Member
Member
Posts: 1567
Joined: Sun Feb 18, 2007 7:28 pm
Contact:

Re: OSDev Series: IA32 machine language

Post by neon »

Hello everyone,

I appreciate the feedback. :D

@Combuster: Thanks for the suggestions :D I am not sure what the last point is addressing however. REX isn't a separate prefix class so we treat it that way.
OS Development Series | Wiki | os | ncc
char c[2]={"\x90\xC3"};int main(){void(*f)()=(void(__cdecl*)(void))(void*)&c;f();}
User avatar
Love4Boobies
Member
Member
Posts: 2111
Joined: Fri Mar 07, 2008 5:36 pm
Location: Bucharest, Romania

Re: OSDev Series: IA32 machine language

Post by Love4Boobies »

stlw wrote:I have error 404 on that link
Same here. It should end in html, not htm.
"Computers in the future may weigh no more than 1.5 tons.", Popular Mechanics (1949)
[ Project UDI ]
User avatar
Combuster
Member
Member
Posts: 9301
Joined: Wed Oct 18, 2006 3:45 am
Libera.chat IRC: [com]buster
Location: On the balcony, where I can actually keep 1½m distance
Contact:

Re: OSDev Series: IA32 machine language

Post by Combuster »

neon wrote:REX isn't a separate prefix class so we treat it that way.
That just wasn't actually self-contradicting so we treat the article that way... :wink:
(Obfuscations aside, either treat REX as a separate entity throughout or as yet another prefix throughout, but do not mix both)
Same here. It should end in html, not htm.
Didn't know you take more than six hours for a post :D
"Certainly avoid yourself. He is a newbie and might not realize it. You'll hate his code deeply a few years down the road." - Sortie
[ My OS ] [ VDisk/SFS ]
User avatar
Love4Boobies
Member
Member
Posts: 2111
Joined: Fri Mar 07, 2008 5:36 pm
Location: Bucharest, Romania

Re: OSDev Series: IA32 machine language

Post by Love4Boobies »

Combuster wrote:
Same here. It should end in html, not htm.
Didn't know you take more than six hours for a post :D
Um, apparently I clicked on the link in stlw's quote.
"Computers in the future may weigh no more than 1.5 tons.", Popular Mechanics (1949)
[ Project UDI ]
Post Reply