Would appreciate some help porting Q3VM to D (mainly C macros and type conversions)
Mark Bauermeister
bauermeistermarkusdev at gmail.com
Fri Oct 18 14:41:15 UTC 2024
On Thursday, 17 October 2024 at 02:47:03 UTC, Mai Lapyst wrote:
> On Wednesday, 16 October 2024 at 13:10:34 UTC, Mark
> Bauermeister wrote:
>> I think I got every compiler complaint fixed now. However,
>> upon launch the program immediately quits with "Error Program
>> exited with code -11". I assume that's a segfault, right?
>>
>> https://gist.github.com/markusbkk/442a571353a48c5377c503e7d02570fb
>
> Yes, an exitstatus of -11 is an SIGSEGV, like in any other
> unix/linux program.
>
> One thing that you might wanna change is your ARRAY_LEN
> function: D already supports getting the length of an array
> with the `.length` property on arrays. Also the `x.sizeof`
> divided through itself will always only yield `1`.
Yea. I forgot about the sizeof division being wrong. I replaced
all calls to ARRAY_LEN with \<array>.length.
No more segfaults thus far but strangely the proper switch case
(https://gist.github.com/markusbkk/442a571353a48c5377c503e7d02570fb#file-dq3vm-d-L1200) is never hit. Instead, it goes straight to the default (https://gist.github.com/markusbkk/442a571353a48c5377c503e7d02570fb#file-dq3vm-d-L1055) even though there's a matching case.
When I `printf("%i", opcode)` inside the default case it
correctly prints "3" which is `goto_OP_ENTER`, so I don't quite
understand why it won't hit the correct branch.
I tried adding the default case to the very bottom of the
switch/case chain too, thinking maybe this is somehow sequential.
But to no avail.
More information about the Digitalmars-d-learn
mailing list