Assembly 如何使用GNU GAS中的字符文字来替换数字?

Assembly 如何使用GNU GAS中的字符文字来替换数字?,assembly,gnu-assembler,Assembly,Gnu Assembler,例如,我想写一些类似于'a'的东西,而不是像在C中那样写0x61 手册在中提到了它们:但是没有一个例子,我不确定我是否理解 /* Immediate. Without the `$`, does a memory access, and segfaults! */ mov $'a, %al /* al == 0x61 */ /* Memory. */ mov c, %al /* al == 0x62 */ c: .byte 'b /* Space character works. */ m

例如,我想写一些类似于
'a'
的东西,而不是像在C中那样写
0x61

手册在中提到了它们:但是没有一个例子,我不确定我是否理解

/* Immediate. Without the `$`, does a memory access, and segfaults! */
mov $'a, %al
/* al == 0x61 */

/* Memory. */
mov c, %al
/* al == 0x62 */

c: .byte 'b

/* Space character works. */
mov $' , %al
/* al == 0x20 */

/* Backslash escapes work. */
mov $'\n , %al
/* al == 0x0A */

实际上有一个例子:

我不喜欢这种语法,原因如下:

  • 不能很好地使用C预处理器:
    宏($'a)
    失败,因为cpp将
    视为字符文本
  • 可能会生成尾随空格作为
    $”
    ,这很难观察到
  • 不象C

实际上有一个例子:

我不喜欢这种语法,原因如下:

  • 不能很好地使用C预处理器:
    宏($'a)
    失败,因为cpp将
    视为字符文本
  • 可能会生成尾随空格作为
    $”
    ,这很难观察到
  • 不象C

如果有人能解释投票失败的原因,请告诉我,以便我能够了解并改进信息;-)如果有人能解释投票失败的原因,请告诉我,这样我就可以了解并改进信息;-)关闭
是可选的,您不必忽略它。(我还没意识到你甚至可以省略它)
mov$'a',%al
汇编很好,这是我通常使用的。但不幸的是,
mov$'abcd',%eax
不像NASM那样被接受。
ab
部分看起来像标签
97
的向后参考,像
1b
但带有
a
的ASCII码。因此,您会收到奇怪的错误消息。关闭
是可选的,您不必忽略它。(我还没意识到你甚至可以省略它)
mov$'a',%al
汇编很好,这是我通常使用的。但不幸的是,
mov$'abcd',%eax
不像NASM那样被接受。
ab
部分看起来像标签
97
的向后参考,像
1b
但带有
a
的ASCII码。所以你会收到奇怪的错误信息。
.byte  74, 0112, 092, 0x4A, 0X4a, 'J, '\J # All the same value.