Hello Chris, Rusell<br><br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;"><div><div class="h5">
> What about declaring that pointers are always 64 bits, for all<br>
> purposes other than final code generation of actual pointer<br>
> instructions? Would that solve the problem?<br>
<br>
</div></div>Yep.  That would be a fine approach, and probably conformant to the spec.<br></blockquote><br>I have some question about your disscussion.<br>the main difference is as follows:<br>>1. void*<br>
>     In EFI C, the void* is 4-byte for 32-bit processor and 8-byte 
for 64-bit processor.<br>
>     And it can appears in any where like ANSI C.<br>
>     So the main problem is that struct layout like<br>
>     struct S{<br>
>         void* X;<br>
>     };<br>
>     is not static.<br>
> 2. no floating support in EFI C<br>
> 3. no C++ support in EFI C<br>
> 4. no assembly support in EFI C, all assembly must convert to C<br>In my opinion, the main compiling process is C --a--> LLVM IR --b--> EBC byte code<br>So as you say, solve the difference 2,3,4 in process a and assumed void * be 64-bit in process a<br>
Then solve the difference 1 in process b??<br><br>thanks<br><br>ching<br></div>