Intel® C++ Compiler
Community support and assistance for creating C++ code that runs on platforms based on Intel® processors.

inline asm pushw

Moshe_Lazer
Beginner
288 Views


I am using ICC 11.1 on linux

when compiling a c file with the follwing line:

__asm__ ("pushw $-5");

it creates the asm command:

push $0xfffffffb

instead of:

pushw $0xfffffffb


Thanks Moshe

0 Kudos
1 Reply
Om_S_Intel
Employee
288 Views

Itried the following and compiler is using pushq and looks good to me.

$ cat tstcase.c

void foo()

{

__asm__ ("pushw $-5");

}

$icc -c -S -fsource-asm tstcase.c
$ cat tstcase.s
# -- Machine type EFI2

# mark_description "Intel C++ Compiler for applications running on Intel 64, Version 11.1 Build 20100414 %s";

# mark_description "-c -S -fsource-asm";

.file "tstcase.c"

.text

..TXTST0:

# -- Begin foo

# mark_begin;

.align 16,0x90

.globl foo

foo:

..B1.1: # Preds ..B1.0

;;; {

..___tag_value_foo.1: #2.1

# LOE rbx rbp r12 r13 r14 r15

..B1.4: # Preds ..B1.1

# Begin ASM

;;; __asm__ ("pushw $-5");

pushq $-5 #3.0

# End ASM

# LOE rbx rbp r12 r13 r14 r15

..B1.5: # Preds ..B1.4

;;;

;;; }

ret #5.1

.align 16,0x90

..___tag_value_foo.2: #

# LOE

# mark_end;

.type foo,@function

.size foo,.-foo

.data

# -- End foo

.data

.section .note.GNU-stack, ""

// -- Begin DWARF2 SEGMENT .debug_line

.section .debug_line

.debug_line_seg:

.align 1

// -- Begin DWARF2 SEGMENT .eh_frame

.section .eh_frame,"a",@progbits

.eh_frame_seg:

.align 8

.4byte 0x00000014

.4byte 0x00000000

.byte 0x01

.byte 0x00

.byte 0x01

.byte 0x78

.byte 0x10

.4byte 0x9008070c

.byte 0x01

.4byte 0x00000000

.2byte 0x0000

.4byte 0x00000014

.4byte 0x0000001c

.8byte ..___tag_value_foo.1

.8byte ..___tag_value_foo.2-..___tag_value_foo.1

# End

0 Kudos
Reply