Re: I'd like to be able to set registers directly
Re: I'd like to be able to set registers directly
- Subject: Re: I'd like to be able to set registers directly
- From: William Kucharski <email@hidden>
- Date: Thu, 07 Jul 2016 06:55:55 -0600
> On Jul 7, 2016, at 6:36 AM, Gordo Cath <email@hidden> wrote:
>
> Hi,
> I'd like to be able to set a register directly from my c code. I'm using the llvm compiler in a x86_64 build/run environment.
>
> When I compile and link the following code I get no errors or warnings:
>
> I used the thread_create_running function and during setup set the r11 register to 0xBEAD as a start state using x86_thread_state64_t .
>
> ///snippet---- at the very start of my thread I have the following tidbit of code:
> register uint64_t r11 asm("r11");
> r11=0xfade; // some value -- don't care about the value, just want my value set.
> //end snippet
What, precisely, are you trying to do? As far as I know, that asm syntax is just wrong.
I would expect to see something like this for x86_64:
#include <stdio.h>
#include <sys/types.h>
int
main()
{
int64_t r11;
r11 = 0xc01ddeadbeef; /* init r11 */
asm ("movq %0, %%r11" :: "r"(r11) : "r11"); /* move r11 to %r11 */
r11 = 0; /* zero r11 */
asm ("movq %%r11, %0" : "=r"(r11) ::); /* move %r11 to r11 */
(void) printf("%llx\n", r11); /* verify %r11 */
return 0;
}
William Kucharski
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Darwin-kernel mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden