x86

x86 jump to an address

As an assignment for a security class, I am trying to use __asm__("jmp 0xbffff994"); in my code, but when I disassemble things in gdb, the instruction is changed to jmp 0xc8047e2a. Any idea why and how can I jump to a particular address? ...

Can some explain where I would locate the start of this IDE controller register address map in memory?

I have been pouring through documentation as part of my quarter long project to develop a simple disk driver. At the moment I am trying to map out the various atapi and IDE controller registers implemented inside the Intel 82801EB IO controller. First of all, the document I am referring to: www.intel.com/assets/pdf/datasheet/252516.pdf ...

assembly vim syntax highlighting

The default assembly syntax file didn't works well,and after a searching on the web about gas assembly,found nothing about gas(AT&T syntax) syntax file for vim.. anyone found this??? I can't write my own syntax file.. ft=nasm ft=asm(default) ft=tasm ...

Injecting a CLR host into a running process - possible?

This way lies madness, I know. I have an executable (the source code to which I do not have access) that I would like to extend via .NET. It's a native executable, so I would need to inject a CLR host in order to do this. My basic idea is to provide scripting-like functionality via a .NET language (C#, for example) and provide hooks in ...

How to perform atomic 64b read on x86 (Pentium and above)?

I would like to perform and atomic read of 64b aligned 64b data on x86 platform (Pentium or above guaranteed). Is there a way to do this? (And no, I do not want to use a critical section or a mutex for this, I want this to be lock-free). ...

Why won't my WinForms app compiled for "x86" exit on an "x64" machine when running outside "C:\Program Files (x86)"?

We have a WinForms app that runs fine on x86, but has many third-party components that make win32 calls. To get the apps to run on x64, I now compile for the x86 platform. Our habit has been to install our thick-client outside the system partition on servers, so we installed in "F:\Program Files (x86)" yesterday on a Win2003 x64 server. ...

Assembly instructions to find how many threads are enabled in a multi-core system

I'm working on a bare-bones system in which I need to determine sometime after boot how many cores and threads are enabled, so that I can send them SIPI events. I also want each thread to know which thread it is. For instance, in a single-core configuration with HT enabled, we have (for instance, Intel Atom): thread 0 --> core 0 threa...

What is the "EU" in x86 architecture? (calculates effective address?)

I read somewhere that effective addresses (as in the LEA instruction) in x86 instructions are calculated by the "EU." What is the EU? What is involved exactly in calculating an effective address? I've only learned about the MC68k instruction set (UC Boulder teaches this first) and I can't find a good x86 webpage thru google =/ . Thank...

about assembly CF(Carry) and OF(Overflow) flag

It's known that CF indicates unsigned carry out and OF indicates signed overflow. So how does an assembly program differentiate between unsigned and signed data since it's only a sequence of bits? (Through additional memory storage for type information, or through positional information or else?) And could these two flags be used interch...

Windows Server 2008 Hyper-V on x86 processor

I notice there are two version of Windows Server 2008 w/ Hyper-V available for download on the MSDN Subscription License site: Windows Server 2008 Datacenter, Enterprise and Standard (x64) Windows Server 2008 Datacenter, Enterprise and Standard (x86) I want to set up a development server for testing/developing using the Hyper-V softw...

How do I compile assembly routines for use with a C program (GNU assembler)?

Hello! I have a set of assembly function which I want to use in C programs by creating a header file. For instance, if I have asm_functions.s which defines the actual assembly routines and asm_functions.h which has prototypes for the functions as well as some standard #define's I needed. My goal is to use a C program, say test_asm.c to ...

How to do a call far (x86) to a given 32-bit address?

Ok, I need to perform a CALL FAR to the PCI BIOS service directory (32 bit mode) to verify that the PCI BIOS is present. NOTE: I am developing a simple disk driver for a simple operating system we are developing a college. I understand that this is very specific, but I will be doing all this from kernel code. Suppose I already found th...

Contigious Pages/Physical Memory in Java

My goal is to ensure that an array allocated in java is allocated across contiguous physical memory. The issue that I've run into is that the pages an array is allocated across tend not to be contiguous in physical memory, unless I allocate a really large array. My questions are: Why does a really large array ensure pages which are co...

How to change processor stack?

Why doesn't this code print "test"? #include <stdio.h> #include <stdlib.h> void foo ( void ) { printf("test\n"); } __declspec(naked) void bar ( void ) { asm { push 0x000FFFFF call malloc pop ecx push eax add eax, 0x000EFFFF mov ecx, esp mov esp, eax push ecx call foo ...

Is IMUL AX valid?

Hi all, I spent last hour googling, trying to find out if IMUL AX is valid command in 80x86 assembler. Sorry for not trying out, I just don't have tools at PC I'm currently using. All I need is just a quick answer yes/no. Thanks! jpou Update: Tried and verified today. Works as expected. -R AX=0002 BX=0000 CX=20CD DX=0000 SP=FFEE...

Macros in x86 assembly coding

Can somebody please explain how to use macros in x86 assembly coding ...

How do I configure an ATA hard disk to start generating interrupts?

RESOLVED After much confusion and frustration, I finally got my hard disk to interrupt. :D It basically came down to the fact that I kept reading the status register instead of the alternate status register. A few other things were messed up to boot, but the point is my hard disk driver is finally starting to take shape. Now, for others...

Windows 64-bit registry v.s. 32-bit registry

Hello everyone, I heard on Windows x64 architecture, in order to support to run both x86 and x64 application, there is two separate/different sets of Windows registry -- one for x86 application to access and the other for x64 application to access? For example, if a COM registers CLSID in the x86 set of registry, then x64 application wi...

64 to 32 bit Interop - how?

I need to integrate some legacy 32-bit code - for which I don't have the source code, into a project in such a way that it can be called from a 64-bit .NET assembly. The original code is implemented as a 32-bit COM object in a DLL. Windows doesn't allow direct calls from 64 to 32-bit objects, so I'm looking for inspiration on how to deal...

How do modern compilers use mmx/3dnow/sse instructions?

I've been reading up on the x86 instruction set extensions, and they only seem useful in some quite specific circumstances (eg HADDPD - (Horizontal-Add-Packed-Double) in SSE3). These require a certain register layout that needs to be either deliberately set up, or occur from the series of instructions before it. How often do general-purp...