comp.lang.ada
 help / color / mirror / Atom feed
From: NiGHTS <nights@unku.us>
Subject: Using pointers with inline assembly in Ada
Date: Thu, 9 Jun 2022 14:30:18 -0700 (PDT)	[thread overview]
Message-ID: <db04b8e7-ba96-4f4a-afb1-575e446ace64n@googlegroups.com> (raw)

I would like to write an inline assembly code in Ada that simply writes a constant to a specific element of an array of unsigned values.

I'm shooting in the dark here because there are absolutely no references on this subject, to my surprise.

This was my first experiment which produces a memory access error. In this early version I'm just trying to write to the first element.

declare
         type ff is array (0 .. 10) of Unsigned_32;
         pragma Pack(ff);
         Flags : aliased ff := (others => 0);
         Flag_Address : System.Address := Flags'Address;
begin
        Asm (   "movl %0, %%eax" &
                "movl $1, (%%eax)" ,             
                Inputs   => System.Address'Asm_Input ("g", Flag_Address),
                Clobber  => "eax",
                Volatile => true
        );
        Put_Line ("Output:" & Flags(0)'Img);
end;

Any help would be greatly appreciated!

             reply	other threads:[~2022-06-09 21:30 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-06-09 21:30 NiGHTS [this message]
2022-06-10  5:24 ` Using pointers with inline assembly in Ada Rod Kay
2022-06-10 11:16   ` Luke A. Guest
2022-06-10 12:26     ` NiGHTS
2022-06-10 12:16   ` NiGHTS
2022-06-10 13:19     ` Jeffrey R.Carter
     [not found]   ` <nnd$727405a5$1c8a5b81@aedbf58048bf777d>
2022-06-10 12:23     ` NiGHTS
2022-06-11  1:43   ` Rod Kay
2022-06-10 13:39 ` Jeffrey R.Carter
2022-06-11  1:51   ` NiGHTS
2022-06-11 12:28 ` Simon Wright
2022-06-11 12:32   ` NiGHTS
2022-06-13 20:33 ` Gabriele Galeotti
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox