Using the JMP Build Function on x86_64

I am really new to programming (in general - this is a pity), and several Python-related assemblers have appeared in this application, which I crack to run on the 64-bit version.

Essentially, the code is as follows:

#define FUNCTION(name)        \
  .globl _##name;             \
  _##name:                    \
    jmp *(_p_##name)

.text
  FUNCTION(name)

The FUNCTION (name) syntax is used approximately 50 times to determine the headers for the external Python library, as far as I can tell (I will not pretend to fully understand it, I just fixed it).

Since I am compiling for x86_64, the following error is output by GCC for each FUNCTION (name) instance:

32-bit absolute addressing is not supported for x86-64

cannot perform signed 4-byte move

How can I “fix” this to run on x86_64?

+3
1

Intel Architecture. , jmp 64- . , " , , " . . 2A, . 3-549 jmp.

+2

Source: https://habr.com/ru/post/1732888/


All Articles