- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
<< Intel 64 and IA-32 Architectures Software Developer's Manual Volume 2B: Instruction Set Reference, N-Z>> 说:
| Opcode* | Instruction | Op/En | 64-Bit Mode | Compat/Leg Mode | Description |
| 6A | PUSH imm8 | C | Valid | Valid | Push imm8. |
| 68 | PUSH imm16 | C | Valid | Valid | Push imm16. |
| 68 | PUSH imm32 | C | Valid | Valid | Push imm32. |
#cat -n 测试.asm
1 bits 64
2
3 push byte 12
4 push word 12
5 push dword 12
6 push qword 12
7
#nasm 测试.asm
test.asm:5: error: instruction not supported in 64-bit mode
为什么第 5 行是非法的?我认为它匹配“PUSH imm32”。
为什么第 6 行是合法的?它与“PUSH imm8/PUSH imm16/PUSH imm32”中的任何一个都不匹配。
请帮帮我!
======测试======
I think that the Intel manual is right, the 'push imm'
instructions do have three encoding form:
Form 1: 6a XX
Form 2: 66 68 XX XX
Form 3: 68 XX XX XX XX
What we are arguing is the implemental specific behavior of the NASM.
In NASM 2.04rc1(the above example I given):
1. The 'byte' in 'push byte imm' direct the NASM use the Form 1,
no matter how long the imm given in the instruction it is, the imm
was trunked to a byte in final machine code.
2. The 'word' in 'push word imm' direct the NASM use the Form 2,
no matter how long the imm given in the instruction it is, the imm
was trucked or zero-extended to a word in final machine code.
3. The 'qword' in 'push dword imm' direct the NASM use the Form 3,
no matter how long the imm given in the instruction it is, the imm
was trucked or zero-extended to a dword in final machine code.
Note: the 'qword' in the instruction but 'dword' in final machine
code, which made us confused.
4. if none of 'byte', 'word', 'qword' is given, the NASM use the From 3.
请看下面的例子:
# cat -n push.asm
1 bits 64
2
3 push byte 0x21
4 push byte 0x4321
5
6 push word 0x4321
7 push word 0x654321
8
9 push qword 0x654321
10
11 push 0x21
12 push 0x4321
13 push 0x654321
14 push 0x87654321
15 push 0xa987654321
16
# nasm -v
NASM version 2.04rc1 compiled on Feb 21 2009
# nasm push.asm -o push.bin
push.asm:4: warning: signed byte value exceeds bounds
push.asm:7: warning: word data exceeds bounds
# ndisasm -b 32 push.bin // 'ndisasm -b 64 push.bin' not works right in this version of NASM.
00000000 6A21 push byte +0x21
00000002 6A21 push byte +0x21
00000004 66682143 push word 0x4321
00000008 66682143 push word 0x4321
0000000C 6821436500 push dword 0x654321
00000011 6821000000 push dword 0x21
00000016 6821430000 push dword 0x4321
0000001B 6821436500 push dword 0x654321
00000020 6821436587 push dword 0x87654321
00000025 6821436587 push dword 0x87654321
In newer NASM, the behavior changes:
(1) 'push 0x21' was encoded to '6A21' in NASM 2.10.01,
while '6821000000' in NASM 2.04rc1;
(2)'push dword 0x654321' in 64 bit mode was allowed
in NASM 2.10.01 and encoded to '6821436500'
最佳答案
说明书错了。 (顺便说一句,这不是唯一的错误)
在 64 位模式下,没有 32 位推送。 push
是少数没有 REX.W 前缀的升级到 64 位的指令之一,您不能将其降级。
编辑:实际上,我的手册版本说的是正确的:
Push sign-extended imm32. Stack pointer is decremented by the size of stack pointer.
所以在 64 位模式下,这转化为“压入一个 qword,符号从立即数扩展”。
关于assembly - 'push imm'如何编码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11291151/
我的团队正在使用 gerrit 代码审查,本质上这意味着默认的推送行为会绕过标准工作流程,因此我们需要使用 git push origin HEAD:refs/for/feature 来正确推送我们的
我是 assembly 新手,我正在使用 MASM。我看到这些代码行,想知道这之间有什么区别 a) push myVar b) push [myVar] c) push OFFSET myVar 我怎
美好的一天! 将镜像推送到docker hub时遇到一些问题。我的第一个软件版本: vagrant@debian-8-docker:~$ docker version Client version:
我有三个 Controller 一二三 .首先是navigationController的rootViewController。 在 SecondViewController ,我有一个名为 的协议(
我在这个 Google 教程的帮助下实现了一个 Web Push API: https://developers.google.com/web/fundamentals/getting-started
我有两个模式: var optionsSchema = new Schema({ locationname: String, locationnumber : String
我是 git 的新手并对其进行了测试。我已经能够克隆 friend 存储库进行小的本地更改并提交。 我现在想测试将我的本地更改推送到远程存储库,但不幸的是当我尝试进行推送时 $ git push <
我们正在公司讨论 git rebase 之后该做什么。在rebase之后,您需要将更改推送到远程origin,但是当git不允许时我们应该怎么做呢?实际上,我们正在讨论当分支已经被推送时我们最常用的两
我正在使用具有嵌入式 github 支持的新 IDE。在命令行本地,我可以成功地使用 git push orgin master 并更新 github。但是我的 IDE 使用带有 -v 标志的命令,这
我仍在阅读有关 RoR 的一些指南,我被困在 Deploying The Demo App 上 我遵循了说明: With the completion of the Microposts resour
我正在尝试创建一个可以将我的 git 存储库镜像到另一个存储库的脚本。一切正常,但它一直在说 [remote rejected] refs/pull/xx/head -> refs/pull/xx/h
我想了解使用 Tortoise SVN 构建过程的一些过程。主要是 我想知道你是否插入: 主线中继 QA 后的一个分支将其抓取到本地的工作副本中并测试该分支,然后一些构建推送该分支 我遇到的问题是我在
在谈论将消息推送到移动应用程序以触发 WAP 内容的下载时,似乎都使用了 WAP 推送和 SMS 推送这两个术语。 这些术语是指相同的机制还是具有不同的含义? 最佳答案 SMS Push 是告诉终端发
我只是想知道是否有人使用这种技术: 由于推送通知仅随 OS 3.0 一起提供,因此我一直在考虑使用电子邮件推送(Exchange、mobile.me)作为解决方法: 您可以注册一个 URL,例如。 m
我正在 build WP website using DIVI theme .应该被插入 dataLayer 的标签被默认的“未设置”值卡在某个地方。 为了推送我使用脚本的值: functi
我最近删除了xcode 6 beta 3并安装了xcode 6 beta 6 当我在终端输入gitpush时,这发生了 xcrun:错误: Activity 的开发人员路径(“/Application
我即将实现ionic-native Push Notifications .这可以在浏览器中运行吗?还是我需要安装 iOS/Android 模拟器? 最佳答案 除非您使用 Phonegap 推送服务器
Safari 12.1 是否支持服务 worker PWA 推送通知?我试过这个 demo在 iOS 上,但它仍然不适合我。 有机会得到它们吗?谢谢。 最佳答案 目前没有关于此功能的通信...Appl
目前我有很多 chrome 浏览器的推送订阅都是这样的方法, swr.pushManager.subscribe({userVisibleOnly: true}) .then(function
我需要 4 个过渡效果,但我只知道 2 个过渡效果,还有 2 个我不知道。我知道的 2 个过渡动画是: 过渡时下推: 并向下推过渡: 但
我是一名优秀的程序员,十分优秀!